【Azure Data Factory版】Microsoft Fabric の停止/再開/SKU変更をスケジューリングする

## はじめに

以下記事の Azure Data Factory 版です。

https://qiita.com/ryoma-nagata/items/91a5c7229e4f553501d7


## 注意事項

2024/4/15追記
以下の記載より、停止すると停止した時点で、本来時間をかけて完済されるはずの平滑化CUや超過分のCUは一気に請求に回る記述があるので停止処理の実行は注意してください

https://blog.fabric.microsoft.com/ja-JP/blog/capacity-platform-updates-for-pause-resume-and-capacity-metrics-for-copilot-and-vnet-gateways/
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/2123a006-8830-d7e9-4b32-56a37ccf6243.png)
## 事前準備

実行する Azure Data Factory に対してFabric 容量の共同作成者ロールを付与してください

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/2cbfb289-4b36-4895-d2ff-75b6a134fece.png)

## 導入手順

1. https://github.com/ryoma-nagata/FabricAutomation/raw/main/adf_sample/ManageFabricCapacityAzure.zip からパイプラインテンプレートを落とします。

2. Data Factory Studio 上でパイプラインをインポートします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/9653a244-0496-7fff-39eb-2fc3d83e7011.png)

3. 4つのパイプラインがインポートされます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/ed07645f-83ef-eb2b-e524-73c4ef3c7f4e.png)


## 使い方・解説

### ManageFabricCapacityAzure

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/a089fea6-8501-0759-1c10-6d4f1baf84e2.png)

module 内のパイプラインを実行します。Action パラメータにより実行するパイプラインが変わります
こちらにトリガーなどを設定して使いましょう。

パラメータは以下のように設定してください。（トリガー内でactionの値を指定すると良いと思います）


| 名前 | 説明 |
| ---- | ---- |
| CapacityName | 対象のFabric リソース名を入力してください |
| ResourceGroupName | 対象のFabric リソースのあるリソースグループ名を入力してください |
| SubscriptionId | 対象のFabric リソースのあるサブスクリプションIDを入力してください |
| Action | 以下いずれかの値を入れます<br> scaling: SKUサイズを変更します<br> suspend: 容量を停止します　<br> resume: 容量を再開します |
| TargetSKUSize | 容量の変更後サイズを指定します。（例 F2）scalingのときのみ機能します |

### ScalingFabricCapacityAzure

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/00a92be5-1f55-74fc-e83f-37f7771411bc.png)

容量サイズを変更します。

#### Get_Capacity

``` 
GET https://management.azure.com/subscriptions/{SubscriptionId}/resourceGroups/{ResourceGroupName}/providers/Microsoft.Fabric/capacities/{CapacityName}?api-version=2022-07-01-preview
```
にて、容量の状態を取得します。

#### （IFの中）Scaling

``` 
PATCH https://management.azure.com/subscriptions/{SubscriptionId}/resourceGroups/{ResourceGroupName}/providers/Microsoft.Fabric/capacities/{CapacityName}?api-version=2022-07-01-preview
```
にて、SKU を更新します。

### SuspendFabricCapacityAzure

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/0d265e7f-8fff-372d-e937-8f5130382521.png)

容量サイズを停止します。

#### （IFの中）Suspend

``` 
POST https://management.azure.com/subscriptions/{SubscriptionId}/resourceGroups/{ResourceGroupName}/providers/Microsoft.Fabric/capacities/{CapacityName}/suspend?api-version=2022-07-01-preview
```
にて、停止処理を実行します。


### ResumeFabricCapacityAzure

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/cdd374f4-3bf8-6b63-46a9-2ac1b68dc3a4.png)


容量サイズを再開します。

#### （IFの中）Resume

``` 
POST https://management.azure.com/subscriptions/{SubscriptionId}/resourceGroups/{ResourceGroupName}/providers/Microsoft.Fabric/capacities/{CapacityName}/resume?api-version=2022-07-01-preview
```
にて、再開処理を実行します。