Azure Automation RunbookでMicrosoft Fabric容量をスケジュール実行してコスト削減！自動一時停止ガイド

# はじめに

こんにちは、あるいはこんばんは。

この記事をご覧の方は、Microsoft Fabricの利用を検討されている、あるいは既に利用されている方かもしれません。Microsoft Fabricは2023年に一般提供（GA）が開始された、マイクロソフトが提供する統合データ分析プラットフォームです。

[Microsoft Fabric 公式サイト](https://www.microsoft.com/ja-jp/microsoft-fabric)

Microsoft Fabricを利用する際、Azure上で「Fabric容量（Capacity）」を作成する方法があります。このFabric容量には「再開（Resume）」状態と「一時停止（Suspend）」状態があり、VM（仮想マシン）などと同様に、**利用していない時間帯に一時停止することで、コストを最適化**できます。

今回は、このFabric容量を**毎日決まった時間に自動で一時停止する仕組み**を、Azure Automation Runbookを使って構築する方法をご紹介します。

# Microsoft公式ガイドについて

Microsoftの公式ドキュメントにも、Fabric容量の一時停止・再開の自動化に関する記述があります。

> Azure Runbookを使用すると、一時停止操作と再開操作をスケジュールできます。
>
> 出典: [Fabric 容量の一時停止と再開 - Microsoft Fabric | Microsoft Learn](https://learn.microsoft.com/ja-jp/fabric/enterprise/pause-resume#schedule-your-operation)

具体的な手順は、以下のRunbookギャラリーに関するドキュメントで解説されています。

[Azure Automation Runbook ギャラリー | Microsoft Learn](https://learn.microsoft.com/ja-jp/azure/automation/automation-runbook-gallery#import-a-module-from-the-modules-gallery-in-the-azure-portal)

ただし、ドキュメント内のスクリーンショットや説明が現在のAzure PortalのUIと若干異なる部分があるため、本記事では**最新のUI（2025年3月現在）に基づいた具体的な手順**を解説します。


# 手順1: Automationアカウントの作成と権限付与

まず、Runbookを実行するためのAutomationアカウントを作成し、Fabric容量を操作するための権限を付与します。

1.  **Azureポータル** ([https://portal.azure.com](https://portal.azure.com)) にサインインし、上部の検索バーで「**Automation アカウント**」を検索し、サービスを開きます。
2.  「**+ 作成**」ボタンをクリックし、画面の指示に従って新しいAutomationアカウントを作成します。（サブスクリプション、リソースグループ、名前、地域などを選択・入力）
3.  作成したAutomationアカウントのページを開き、左側のメニューから「**アクセス制御 (IAM)**」を選択します。
4.  「**+ 追加**」ボタンをクリックし、「**ロールの割り当ての追加**」を選択します。
5.  「**ロール**」タブで、「**共同作成者 (Contributor)**」ロールを検索して選択し、「**次へ**」をクリックします。（※ このロールには、Fabric容量を一時停止・再開する権限が含まれます）
6.  「**メンバー**」タブで「**+ メンバーを選択する**」をクリックします。右側に表示されるパネルで、**先ほど作成したAutomationアカウントの名前**を検索して選択し、「**選択**」ボタンをクリックします。
7.  「**レビューと割り当て**」タブで内容を確認し、「**レビューと割り当て**」ボタンをクリックして、ロールの割り当てを完了します。

# 手順2: Runbookの作成と設定

次に、実際にFabric容量を一時停止する処理（スクリプト）を含むRunbookを作成します。

1.  作成したAutomationアカウントの左側のメニューから「**プロセス オートメーション**」セクションにある「**Runbook**」を選択します。
2.  「**ギャラリーを参照**」をクリックします。
3.  「ギャラリーの参照」画面の検索ボックスに「**fabric**」と入力して検索します。
4.  検索結果から「**suspend_or_resume_fabric_capacity_runbook**」をクリックし、「**インポート**」をクリックします。（※環境によっては、クリック後に直接インポート画面に遷移する場合もあります）
5.  インポート設定画面で、Runbookの「**名前**」を任意に決めます（例: `Suspend-FabricCapacity-Daily`）。「**ランタイム バージョン**」が「**5.1**」であることを確認（またはお使いの環境に応じて選択）し、「**インポート**」をクリックします。
6.  インポートが完了したら、Runbookの一覧から作成したRunbook（例: `Suspend-FabricCapacity-Daily`）を選択します。詳細画面が開いたら、「**編集**」をクリックします。
7.  エディター画面が開きます。PowerShellスクリプトの**冒頭部分**を以下のように編集します。
    *   `Param(...)` のブロック全体をコメントアウト（各行の先頭に `#` を追加）します。
    *   `$ResourceID` と `$operation` の行のコメントアウトを解除（行頭の `#` を削除）し、値を設定します。

    ```powershell
    # Paramセクション全体をコメントアウトします。スケジュール実行用に値を直接指定するためです。
    # Param(
    #  [string]$ResourceID, # e.g. "/subscriptions/12345678-1234-1234-1234-123a12b12d1c/resourceGroups/fabric-rg/providers/Microsoft.Fabric/capacities/myf2capacity"
    #  [string]$operation # "suspend" or "resume"
    # )

    # 下記2行のコメントアウトを解除し、値を設定します。
    # 一時停止したいFabric容量の「リソースID」に書き換えてください。
    # リソースIDは、Azureポータルで対象のFabric容量リソースを開き、「プロパティ」または「JSONビュー」で確認できます。
    $ResourceID = "/subscriptions/12345678-1234-1234-1234-123a12b12d1c/resourceGroups/fabric-rg/providers/Microsoft.Fabric/capacities/your_fabric_capacity_name"

    # 今回は自動で「一時停止」させたいので、"suspend" を指定します。
    $operation = "suspend"
    # 再開させたい場合は、$operation = "resume" を使用します。
    #$operation = "resume"

    ### 以降のスクリプトは変更不要 ###
    ```

8.  編集後、エディター画面上部の「**保存**」をクリックし、続いて「**発行**」をクリックします。「はい」を選択して発行を確定します。（※ **発行しないとスケジュール実行できません**ので注意してください）
9.  **（任意）実行確認**: Runbookの詳細画面に戻り、「**開始**」ボタンをクリックして手動で実行テストができます。「はい」をクリックして開始します。しばらくすると、ジョブの状態が「実行中」から「完了」または「失敗」に変わります。Azureポータルで対象のFabric容量の状態が「一時停止」になっていれば成功です。
    *   （注意: 既に一時停止状態の容量に対して実行した場合、ジョブは失敗し「BadRequest」のようなエラーが出ることがありますが、これは期待される動作であり、容量の状態には影響ありません。）

# 手順3: スケジュールの設定

Runbookが正しく動作することを確認したら、定期的に実行するためのスケジュールを設定します。

1.  Runbookの詳細画面で、「**リソース**」セクションにある「**スケジュール**」を選択（もしくは画面上部の「**スケジュールにリンク**」をクリック）します。
2.  「**スケジュールの追加**」をクリックします。
3.  「スケジュールのRunbookへのリンク」画面が開きます。「**スケジュール**」の項目で「**+ スケジュールを追加する**」を選択します。
4.  右側に「スケジュールの追加」パネルが表示されます。以下の項目を設定し、「**作成**」をクリックします。
    *   **名前**: スケジュールを識別する名前（例: `DailySuspend-2300`）
    *   **説明**: （任意）
    *   **開始**: スケジュールを開始する日時
    *   **タイム ゾーン**: 実行時刻の基準となるタイムゾーン（例: `(UTC+09:00) 大阪、札幌、東京`）
    *   **繰り返し**: 「**繰り返し**」を選択
    *   **繰り返し間隔**: 「**1**」
    *   **繰り返し単位**: 「**日**」を選択（毎日実行する場合）
    *   **有効期限を設定**: 必要に応じて設定（無期限も可）
5.  元の「スケジュールのRunbookへのリンク」画面に戻ったら、「**パラメーターと実行設定を構成します**」をクリックします。今回はスクリプト内に値を直接記述したため、特に設定は不要です。内容を確認し、「**OK**」をクリックしてスケジュール設定を完了します。

# 手順4: スケジュール実行の確認

設定したスケジュールどおりにRunbookが実行されているかを確認します。

1.  スケジュールされた時刻になったら、再度Automationアカウントの該当Runbookを開きます。
2.  Runbookの詳細画面で、「**リソース**」セクションの「**ジョブ**」タブを選択します。
3.  スケジュールされた時刻にジョブが開始され、状態が「**完了**」になっていれば、自動一時停止が成功しています。エラーが発生している場合は、ジョブの詳細を確認して原因を調査してください。

# まとめ

以上、Azure Automation Runbookを使用してMicrosoft Fabric容量を自動で一時停止する設定方法を解説しました。

スクリプト (`$operation = "resume"`) とスケジュール設定を変更すれば、**自動で再開する仕組み**も同様に作成できます。例えば、毎日23時に一時停止し、翌朝8時に再開するといった運用を組むことで、Fabric容量の利用料金をより効率的に管理できます。ぜひ、ご自身の環境に合わせて活用してみてください。

*   Azure は、マイクロソフト 企業グループの商標です。
*   その他、本資料に記載されている会社名、製品名は、各社の登録商標または商標です。