API Management を最近よく使うようになってきて、状態の管理やAPIの登録を自動化したいなと思い、調べると Azure API Management の REST APIでいろいろできそうだったので、Power Automate/Logic Appsから利用するための手順を残しておきます。
Azure API Management の REST APIについては以下を参照
大まかな流れとしては、Azure ADにアプリケーションを登録し、API Management 側でそのアプリにRoleを付与。
Power Automate/Logic AppsではHTTPアクション実行時に認証として[Active Directory OAuth]を利用するということになります。
目次
1. Azure ADへのアプリケーション登録
Azureポータル (https://portal.azure.com/) を表示して、[Azure Active Directory] > [App registrations] と進み、[+ New registration] をクリックします。
アプリの名前、アカウントの種類を選択し、[Register] をクリックします。このあたりまではGraph APIと手順は同じですね。
これでアプリケーション登録は完了です。登録が完了するとアプリの概要が表示されます。
ここで表示されている [Application ID], [Directory ID] は後ほどAPIを実行する際に認証情報として利用するので、どこかにメモしておきます。
また、左側メニューの [Certificates & secrets] から、シークレットを生成しておきましょう。
2. API Management へのRole追加
API Management を REST APIで操作するためには操作に必要な権限を付与する必要があります。これを行うためには対象となるAPI Managementのリソースを表示し、[Access control (IAM)] から適切なロールを付与します。
[+Add] をクリックすると必要な情報を入力するダイアログが表示されるので、ここで先ほど作成したアプリケーションに対して [Contribute] のロールを付与します。
API Management の リソース情報に関しては下図で示した、[Service name], [Resource group name], [Subscription ID] もAPI実行時に必要になりますので、メモしておきます。
※下記のようなURLをこれらの情報で構成します。
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis?api-version=2019-12-01
3. Power Automate/Logic AppsからのHTTPリクエスト
最後にPower Automate/Logic AppsからAzure API Management REST APIを実行してみます。 HTTPアクションを追加して下図のように指定します。
これで完成です。ロールが正しく付与されていれば以下のように、APIの一覧が返されます。
おわり
最初は認証とかどうするのかと思いましたが、Graph APIの時との違いは Azure API Management側からロールを付与する点でしょうか。
エラー内容でググったら同じようなフォーラムの質問が出てきて助かりました。
References: