LoginSignup
6
8

Microsoft Fabric 容量の自動開始・停止

Last updated at Posted at 2024-04-15

はじめに

Microsoft Fabric を PoC などで検証している際、Fabric 容量は Power BI Premium per Capacity と違って一時停止をすることができるので、使っていないときに停止しておくと、利用料金の節約になります。(従量課金制の場合)
ただ、この一時停止を忘れることが多く、無駄に課金発生させてしまうことが多々あったため、自動停止の仕組みを導入しました。自動開始の仕組みにも転用できるので、設定方法をご紹介したいと思います。

使用する Azure のサービス

  • Microsoft Fabric
  • Automation アカウント
  • Runbook

全体像

ざっくりアーキテクチャはこんな感じです。
image.png

手順

今回実施する手順は以下の通りです。

  1. PowerShell Runbook に設定するパラメータを事前に収集する
  2. Automation アカウントを作成
  3. マネージド ID に Azure ロールを割り当てる
  4. Automation アカウントの Runbook のギャラリーから テンプレートの PowerShell をインポート
  5. 自分の環境に合わせて PowerShell Runbook を書き換え
  6. Runbook とスケジュールと紐づけ

1. PowerShell Runbook に設定するパラメータを事前に収集する

PowerShell Runbook を実行する際、以下の情報が必要になります。

  • サブスクリプションID
  • リソースグループ名
  • Fabric 容量名

これらをまずは収集しておきます。

1-1. 自動で開始・停止をする Microsoft Fabric 容量 の概要ページで情報を取得する
image.png

2. Automation アカウントを作成

まず、自動実行するための Automation アカウントを作成します。

2-1. Azure Portal の左上のハンバーガーボタンを押して、「すべてのサービス」を選択
image.png

2-2. 「Management and governance」の「Automation アカウント」をクリック
image.png

2-3. 「作成」をクリック
image.png

2-4. 各種設定を行う

2-4-1. 基本
「サブスクリプション」、「リソースグループ」を選択し、「Automation アカウント名」を入力、「地域」を選択する
image.png

2-4-2. 詳細設定
「マネージド ID」 を選択
image.png
※ 例では「システム割り当て」を選択。システム割り当てとユーザー割り当ての違いはこちら
※ なお、Azure Automation では実行アカウントが廃止され、マネージド ID へ移行しています

2-4-3. ネットワーク
「接続の構成」を選択
image.png
※ 例では「パブリック アクセス」を選択

2-4-4. タグ
image.png
※ 例では何も追加していません。

2-4-5. 確認および作成
検証が問題無く終了したら、「作成」ボタン押下
image.png

3. マネージド ID に Azure ロールを割り当てる

Runbook を実行するため、Automation アカウント の マネージド ID に Azure ロールを割り当てます。

3-1. 作成した Automation アカウントの「アカウント設定」の「ID」を選択し、作成したマネージド ID の種類(この例では システム割り当て済み) を選択
「状態」がオンになっていることを確認して、「アクセス許可」の「Azure ロールの割り当て」ボタンを押下
image.png

3-2. Azure ロールの割り当てで、「ロールの割り当ての追加(プレビュー)」を押下
image.png

3-3. 「スコープ」を選択し、スコープの内容と役割を選択し、保存ボタンを押下
※ 例では、スコープをリソースグループとして、役割を共同作成者としています。
※ スコープについてはこちらを参照
※ 役割についてはこちらを参照
image.png

3-4. 役割が作成されたことを確認
image.png

4. Automation アカウントの Runbook のギャラリーから テンプレートの PowerShell をインポート

Microsoft Fabric 容量の開始・停止を実行する PowerShell テンプレートをインポートします。

4-1. 作成した Automation アカウントの「プロセス オートメーション」の「Runbook」を選択し、「ギャラリーを参照」を押下
image.png

4-2. ギャラリーの閲覧で、検索ワード「Fabric」で検索実行。検索結果の中から「suspend_or_resume_fabric_capacity_runbook」を選択
image.png
※ ここでは PowerShell Runbook を選んでいますが、Python 3 Runbook のテンプレートもあります。

4-3. テンプレートの PowerShell を確認して、「選択」ボタン押下
image.png

4-4. インポートする Runbook の「名前」、「ランタイムバージョン」、「説明」を入力・選択し、「インポート」ボタンを押下
image.png

5. 自分の環境に合わせて Runbook の PowerShell を書き換え

5-1. 1.の手順で取得しておいた、サブスクリプション ID、リソースグループ名、Fabric 容量のリソース名を使って、インポートした PowerShell のコードを書き換えます

変更前のコードと変更箇所

image.png

コメントアウトされている以下の変数

  • $ResourceID
  • $operation

を自分の環境に合わせたパラメータへ変更してコメントアウトを外す
以下の通り修正します。

$ResourceID

$ResourceID = "/subscriptions/[サブスクリプションID]/resourceGroups/[リソースグループ名]/providers/Microsoft.Fabric/capacities/[Microsoft Fabric 容量リソース名]"

$operation
停止の場合

$operation = "suspend" 

開始の場合

$operation = "resume" 

変更後のコード(今回の例は一時停止)

image.png

保存ボタンを押して保存し、公開ボタンを押して公開する

6. PowerShell Runbook テスト実行

作成した PowerShell Runbook が正しく動作するかテストします。

6-1. 作成した PowerShell Runbook を開き、「開始」ボタンを押下
image.png

6-2. パラメータ無しで「OK」ボタン押下
image.png

6-3. 状態が 完了 になるまで待ち (キュー挿入済み → 開始中 → 実行中 → 完了 の順に遷移する)、エラーが無いことを確認する
image.png

6-4. 該当の Microsoft Fabric 容量の概要ページを開き、容量が一時停止していることを確認する
image.png

7. Runbook とスケジュールと紐づけ

作成した PowerShell Runbook をスケジュールで動くように設定します

7-1. 作成した Automation アカウントの PowerShell Runbook を開く
image.png

7-2. 「スケジュールへのリンク」ボタンを押下
image.png

7-3. 「スケジュールを Runbook にリンクします」をクリック
image.png

7-4. 「スケジュールの追加」をクリック
image.png

7-5. 新しいスケジュールの各項目を入力し、「作成」ボタン押下
image.png
※実行間隔や繰り返し設定などが可能

8. スケジュールされた Runbook の結果を確認

スケジュール実行がうまく起動したかを確認
8-1. Runbook の概要ページを開き、最近のジョブの結果を確認し、正常に完了していることを確認する
image.png
8-2. 該当の Microsoft Fabric 容量の概要ページを開き、容量が一時停止していることを確認する
image.png

まだ対応できていない点

現状、Microsoft Fabric 容量の稼働状況のステータスを取っていないので、開始していないのに一時停止しようとするとエラー、開始しているのに開始しようとするとエラーになります。
こちらについては、PowerShell の修正が必要なため、後日調査しようと思います。

まとめ

Microsoft Fabric 容量の利点である容量の一時停止ですが、どうしても開発中に一時停止を忘れてしまうため、この自動停止を使って、無駄な課金を防ぐようにしましょう。また自動開始にも転用できるので、自動化の仕組みを取り入れ、運用をスムーズに行うよう工夫すると良いと思います。

6
8
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
8