Azure API Managementの起動停止(論理削除、回復)

Api Management,Azure,Logic Apps

REST APIを使ったAzure API Managementの論理削除、回復について纏めてみました。

    • Azure PortalでAPI Managementインスタンスを論理削除、回復
    • REST APIでAPI Managementインスタンスを論理削除、回復
    • Logic Appsを使ってAPI Managementインスタンスの論理削除、回復をスケジュール実行

API Managementには起動停止がなく課金が止める事が出来ません。
コスト削減の1つの手段として論理削除、回復が使えないかという事で試してみました。
API Managementインスタンスの論理削除、回復をLogic Appsを使ってスケジュール実行しています。

※検証環境での利用を目的として試したものです。
※自身の環境や構成に合わせて適時読み替えて下さい。
※Developerの価格レベルを利用しています。

スポンサーリンク

Azure API Managementの論理削除と回復

論理削除と完全削除がある

Azure API Managementには論理削除と完全削除があります。
論理削除されたインスタンスについては48時間以内であれば回復させることができます。

API Management の論理的な削除 (プレビュー)

論理削除されたインスタンスは48時間保持されたのちに完全削除されます。

論理的な削除の動作

※記事記載時点ではプレビューの機能です。

論理削除されたインスタンスには課金が発生しない

論理削除されたインスタンスには課金が発生しません。
したがって論理削除、回復する事で課金を抑えながらコスト削減する事ができます。

※2024年3月時点でマイクロソフトサポート様に確認した際の情報です。

Azure Portal上でインスタンスを論理削除、回復

API ManagementのインスタンスをAzure Portal使って削除、回復させます。

Azure Portalでの手順
削除のアイコンを選択します。
確認メッセージが表示されるのでAPI Managementインスタンス名を入力します。
削除を選択します。
API ManagementサービスでRecoverを選択します。
論理削除されているAPI Managementインスタンスが表示されます。
API Managementインスタンスを指定してRecoverを選択します。

REST API使ってインスタンスを論理削除

API Managementのインスタンスを削除します。
削除時にはリソースグループ名やAPI Managementのサービス名を指定します。

Api Management Service – Delete

※論理削除の状態になります。
※リファレンスの使ってみる(Try It)を使用しています。

インスタンスを削除

リンク先の使ってみるを選択します。

Api Management Service – Delete

Azureにサインインします。
REST API使ってみるでサブスクリプションを選択します。
リソースグループ名やAPI Managementのサービス名を指定します。
実行します。

リソースが削除されている事が確認できます。

REST API使って論理削除されたインスタンスを表示

REST APIを使って論理削除されているAPI Managementインスタンスをリスト表示します。

Deleted Services – List By Subscription

※リファレンスの使ってみる(Try It)を使用しています。

論理削除されたインスタンスを表示

リンク先の使ってみるを選択します。

Deleted Services – List By Subscription

Azureにサインインします。
REST API使ってみるでサブスクリプションを選択します。
実行します。

実行結果に論理削除されているAPI Managementインスタンス名が表示されます。

【実行結果】

{

  “value": [
    {
      “id": “/subscriptions/サブスクリプションID/providers/Microsoft.ApiManagement/locations/japaneast/deletedservices/インスタンス名",
      “name": “api management インスタンス名",
      “type": “Microsoft.ApiManagement/deletedservices",
      “location": “Japan East",
      “properties": {
        “serviceId": “/subscriptions/サブスクリプションID/resourceGroups/リソースグループ名/providers/Microsoft.ApiManagement/service/インスタンス名",
        “scheduledPurgeDate": “2024-03-19T02:24:01.9601833Z",
        “deletionDate": “2024-03-17T02:26:00.4076535Z"
      }
    }
  ]
}

REST API使って論理削除されたインスタンスを回復

論理削除されているAPI Managementインスタンスを回復します。
論理削除されたインスタンスの復元時にはCreate Or Update使用します。

Api Management Service – Create Or Update

本文の"restore"にtrueを指定すると論理削除されたインスタンスの復元になります。

インターフェイスのサポート

※Api Management Service – Restoreはバックアップからの復元時に利用します。

インスタンスを復元

リンク先の使ってみるを選択します。

Api Management Service – Create Or Update

Azureにサインインします。
REST API使ってみるでサブスクリプションを選択します。
リソースグループ名やAPI Managementのサービス名を指定します。
Sample Requestを参考に本文を設定します。
実行します。

【本文設定例】

{
   “location": “リージョン(例:Japan East)",
   “properties": {
   “publisherEmail": “管理者のメール アドレス",
   “publisherName": “Organization name",
   “restore": true
   },
    “sku": {
    “capacity": ユニット数(例:1),
    “name": “価格レベル(例:developer)"
   }
  }

※Sample Requestを参考に作成します。

インスタンスが表示されます。
状態がアクティブ化中となっており回復が実行されている事が確認できます。

—広告—

Logic Appsを使ってAPI Managementの論理削除、回復をスケジュール化

API Managementの論理削除、回復をスケジュール実行する事で起動停止と同じような動作をさせる事が出来ます。
検証環境のコスト削減目的で実施している内容になります。

Logic Appsの概要やリソース作成手順についてはこちらで紹介しています。
コネクタ、アクション、トリガーの概要についても記載しています。

システム割り当てマネージドIDの設定

システム割り当てマネージドIDを有効化します。
Logic AppsにAPI Managementのインスタンス操作する為の権限を割り当てします。
API Managementのインスタンスのリソースグループに対して"API Managementサービスのオペレーターのロール"を割り当てています。

システム割り当てマネージドIDの設定
左側のメニューでIDを選択します。
状態をオンにし保存します。
Azureロールの割り当てを選択します。
“ロールの割り当ての追加"を選択します。
スコープを選択し役割を割り当てます。

※利用環境に合わせて適切なスコープに対して適切な役割を割り当てます。

API Management インスタンスを回復するワークフロー

ロジックアプリデザイナーを利用してワークフローを作成します。
スケジュール実行のトリガーには繰り返しを利用しています。
HTTPのアクションでREST APIを実行しています。
HTTPのアクション設定内容はREST API(使ってみる)で確認した内容を参考に設定します。

※設定値の変数名はapimとしています。変数はオブジェクト形式としています。
※スケジュール実行は毎朝8時30分としています。

ワークフローを作成
ロジックアプリデザイナーでトリガーを選択します。
繰り返しのトリガーを選択します。
繰り返し(Recurrence)のトリガーです。
間隔、頻度を1日にします。
Add new parameterでタイムゾーン、設定時刻(時間、分)を追加、設定します。
Azure Resource Managerのアクションで"サブスクリプションを読み取る"を選択します。
システム割り当てマネージドIDの接続を作成します。
変数のアクションで"変数を初期化する"を選択します。
名前を入力します。
種類にはオブジェクトを選択します。

変数のアクションで"変数の設定"を選択します。
名前を選択します。
値を設定します。
値には対象のAPI Managementインスタンスを設定します。

※変数の設定は環境に合わせて利用ください。

{
 “resourceGroup": “リソースグループ名",
 “apimname": “インスタンス名",

 “capacity": 1,
 “location": “リージョン(例:Japan East)",
 “name": “価格レベル(例:developer)",
 “publisherEmail": “管理者のメール アドレス",
 “publisherName": “Organization name",
 “restore": true
}
データの操作のアクションで"JSONの解析"を選択します。
サンプルのペイロードを使用してスキーマを生成するを選択します。
サンプルには"変数の設定"の値を利用します。
スキーマが生成されます。
 

HTTPのアクションで"HTTP"を選択します。
Add new parameterで認証を追加します。
認証にはシステム割り当てマネージドIDを指定します。
方法、URL、ヘッダー、本文を設定します。

※URLや本文には事前に設定したアクションの設定値を指定しています。

ワークフローを保存します。

※REST API実行時と同じ設定を利用しているにも関わらずHTTP(アクション)の本文でJSONエラーが起こる時があります。その場合スペースやカンマを確認、修正(スペースの削除等)します。
※サブスクリプションIDを取得するアクションについてはこちらに纏めています。

ワークフローを実行してインスタンスを回復

Logic Appsのワークフローを実行してAPI Managementインスタンスを回復します。

ワークフローを実行
Logic Appsで実行を選択します。
ワークフローが完了すると状態がSucceededになります。
API Managementサービスを確認するとインスタンスがアクティブ化中となっています。
インスタンスの回復が開始されている事が分かります。

※ワークフローデザイナーからも保存したワークフローを実行出来ます。

API Management インスタンスを論理削除するワークフロー

ロジックアプリデザイナーを利用してワークフローを作成します。
スケジュール実行のトリガーには繰り返しを利用しています。
HTTPのアクションでREST APIを実行しています。
HTTPのアクション設定内容はREST API(使ってみる)で確認した内容を参考に設定します。

※短いリソースIDは"service/api managementインスタンス名"です。
※リソースプロバイダーは"Microsoft.ApiManagement"です。
※"リソースを読み取る"のアクションのID(リソースID)が複数あります。選択時に注意が必要です。

ワークフローを作成
繰り返し(Recurrence)のトリガーです。
間隔、頻度を1日にします。
Add new parameterでタイムゾーン、設定時刻(時間、分)を追加、設定します。
Azure Resource Managerのアクションで"リソースを読み取る"を選択します。
システム割り当てマネージドIDの接続を作成します。
サブスクリプション、リソースグループ、短いリソースID、APIバージョン等を指定します。

HTTPのアクションで"HTTP"を選択します。
Add new parameterで認証を追加します。
認証にはシステム割り当てマネージドIDを指定します。
方法、URL、ヘッダー、本文を設定します。

※URLに"リソースを読み取る"のIDを指定しています。

ワークフローを保存します。

ワークフローを実行してインスタンスを論理削除

Logic Appsのワークフローを実行してAPI Managementインスタンスを論理削除します。

ワークフローを実行
ワークフローが完了するとグリーンのチェックが表示されます。

※Logic Appsの概要からも保存したワークフローを実行出来ます。

最後に

REST APIを使ったAzure API Managementの論理削除、回復について纏めてみました。
Azure Open AI関連で利用する機会も多いAPI Managementですが出来れば利用料金を抑えたいという事で試してみました。

論理削除後48時間はデータが保持されます。
毎日スケジュール実行する事で起動、停止と同じような事が出来そうです。

※本記事は検証環境での利用を目的としたものです。本番環境で利用を想定したものではありません。
※論理削除、回復は1つの方法として試したものです。API Managementにはバックアップ、リストアなどもあります。

平日のみワークフローを実行する方法についてはこちらで紹介しています。

Logic Appsを利用した仮想マシンの開始、停止(割り当て解除)方法についてはこちらで紹介しています。

Logic Appsを利用したAzure Bastionの起動停止方法についてはこちらで紹介しています。

スポンサーリンク