はじめに
Microsoft Fabric を PoC などで検証している際、Fabric 容量は Power BI Premium per Capacity と違って一時停止をすることができるので、使っていないときに停止しておくと、利用料金の節約になります。(従量課金制の場合)
ただ、この一時停止を忘れることが多く、無駄に課金発生させてしまうことが多々あったため、自動停止の仕組みを導入しました。自動開始の仕組みにも転用できるので、設定方法をご紹介したいと思います。
使用する Azure のサービス
- Microsoft Fabric
- Automation アカウント
- Runbook
全体像
手順
今回実施する手順は以下の通りです。
- PowerShell Runbook に設定するパラメータを事前に収集する
- Automation アカウントを作成
- マネージド ID に Azure ロールを割り当てる
- Automation アカウントの Runbook のギャラリーから テンプレートの PowerShell をインポート
- 自分の環境に合わせて PowerShell Runbook を書き換え
- Runbook とスケジュールと紐づけ
1. PowerShell Runbook に設定するパラメータを事前に収集する
PowerShell Runbook を実行する際、以下の情報が必要になります。
- サブスクリプションID
- リソースグループ名
- Fabric 容量名
これらをまずは収集しておきます。
1-1. 自動で開始・停止をする Microsoft Fabric 容量 の概要ページで情報を取得する
2. Automation アカウントを作成
まず、自動実行するための Automation アカウントを作成します。
2-1. Azure Portal の左上のハンバーガーボタンを押して、「すべてのサービス」を選択
2-2. 「Management and governance」の「Automation アカウント」をクリック
2-4. 各種設定を行う
2-4-1. 基本
「サブスクリプション」、「リソースグループ」を選択し、「Automation アカウント名」を入力、「地域」を選択する
2-4-2. 詳細設定
「マネージド ID」 を選択
※ 例では「システム割り当て」を選択。システム割り当てとユーザー割り当ての違いはこちら
※ なお、Azure Automation では実行アカウントが廃止され、マネージド ID へ移行しています
2-4-3. ネットワーク
「接続の構成」を選択
※ 例では「パブリック アクセス」を選択
2-4-5. 確認および作成
検証が問題無く終了したら、「作成」ボタン押下
3. マネージド ID に Azure ロールを割り当てる
Runbook を実行するため、Automation アカウント の マネージド ID に Azure ロールを割り当てます。
3-1. 作成した Automation アカウントの「アカウント設定」の「ID」を選択し、作成したマネージド ID の種類(この例では システム割り当て済み) を選択
「状態」がオンになっていることを確認して、「アクセス許可」の「Azure ロールの割り当て」ボタンを押下
3-2. Azure ロールの割り当てで、「ロールの割り当ての追加(プレビュー)」を押下
3-3. 「スコープ」を選択し、スコープの内容と役割を選択し、保存ボタンを押下
※ 例では、スコープをリソースグループとして、役割を共同作成者としています。
※ スコープについてはこちらを参照
※ 役割についてはこちらを参照
4. Automation アカウントの Runbook のギャラリーから テンプレートの PowerShell をインポート
Microsoft Fabric 容量の開始・停止を実行する PowerShell テンプレートをインポートします。
4-1. 作成した Automation アカウントの「プロセス オートメーション」の「Runbook」を選択し、「ギャラリーを参照」を押下
4-2. ギャラリーの閲覧で、検索ワード「Fabric」で検索実行。検索結果の中から「suspend_or_resume_fabric_capacity_runbook」を選択
※ ここでは PowerShell Runbook を選んでいますが、Python 3 Runbook のテンプレートもあります。
4-3. テンプレートの PowerShell を確認して、「選択」ボタン押下
4-4. インポートする Runbook の「名前」、「ランタイムバージョン」、「説明」を入力・選択し、「インポート」ボタンを押下
5. 自分の環境に合わせて Runbook の PowerShell を書き換え
5-1. 1.の手順で取得しておいた、サブスクリプション ID、リソースグループ名、Fabric 容量のリソース名を使って、インポートした PowerShell のコードを書き換えます
変更前のコードと変更箇所
コメントアウトされている以下の変数
- $ResourceID
- $operation
を自分の環境に合わせたパラメータへ変更してコメントアウトを外す
以下の通り修正します。
$ResourceID
$ResourceID = "/subscriptions/[サブスクリプションID]/resourceGroups/[リソースグループ名]/providers/Microsoft.Fabric/capacities/[Microsoft Fabric 容量リソース名]"
$operation
停止の場合
$operation = "suspend"
開始の場合
$operation = "resume"
変更後のコード(今回の例は一時停止)
保存ボタンを押して保存し、公開ボタンを押して公開する
6. PowerShell Runbook テスト実行
作成した PowerShell Runbook が正しく動作するかテストします。
6-1. 作成した PowerShell Runbook を開き、「開始」ボタンを押下
6-3. 状態が 完了 になるまで待ち (キュー挿入済み → 開始中 → 実行中 → 完了 の順に遷移する)、エラーが無いことを確認する
6-4. 該当の Microsoft Fabric 容量の概要ページを開き、容量が一時停止していることを確認する
7. Runbook とスケジュールと紐づけ
作成した PowerShell Runbook をスケジュールで動くように設定します
7-1. 作成した Automation アカウントの PowerShell Runbook を開く
7-3. 「スケジュールを Runbook にリンクします」をクリック
7-5. 新しいスケジュールの各項目を入力し、「作成」ボタン押下
※実行間隔や繰り返し設定などが可能
8. スケジュールされた Runbook の結果を確認
スケジュール実行がうまく起動したかを確認
8-1. Runbook の概要ページを開き、最近のジョブの結果を確認し、正常に完了していることを確認する
8-2. 該当の Microsoft Fabric 容量の概要ページを開き、容量が一時停止していることを確認する
まだ対応できていない点
現状、Microsoft Fabric 容量の稼働状況のステータスを取っていないので、開始していないのに一時停止しようとするとエラー、開始しているのに開始しようとするとエラーになります。
こちらについては、PowerShell の修正が必要なため、後日調査しようと思います。
まとめ
Microsoft Fabric 容量の利点である容量の一時停止ですが、どうしても開発中に一時停止を忘れてしまうため、この自動停止を使って、無駄な課金を防ぐようにしましょう。また自動開始にも転用できるので、自動化の仕組みを取り入れ、運用をスムーズに行うよう工夫すると良いと思います。