Logic App(Standardプラン) の HTTPトリガーで叩くCallback URL を取得する方法
結論
Logic App Standard の HTTP トリガーの Callback URL を取得するには、Azure CLI の az rest
コマンドを使い、実際に設定されているトリガー名(例:manual)を指定する必要があります。
Logic App Consumption では When_a_HTTP_request_is_received
という固定の名前が使われていましたが、Standard ではmanualとなっていました。正しい名前を指定しないと URL を取得できません。
はじめに
Azure Logic Apps は、クラウド上で簡単にワークフローを作れる便利なツールです。特に、外部のサービスと連携する際に HTTP トリガーを使うことが多いです。
今回はHTTPトリガーを叩くためにsigが必要だったので、それをaz commandで取得する方法となります。
トリガーごとにsigが変わってしまうので、エンドポイントごとに取得する必要があります。
Consumption 型の Logic App なら、PowerShell の Get-AzLogicAppTriggerCallbackUrl
コマンドで簡単に Callback URL を取得できるみたいです。Standard 型ではこのコマンドが使えない?という情報もありました。(ただ、今回はaz commandを使いたいというのもあり別の方法にしました。)
https://stackoverflow.com/questions/61362860/how-can-you-obtain-the-full-url-of-a-http-triggered-logic-app-in-the-azure-porta
代わりに Azure CLI の az rest
コマンドを使って URL を取得する方法が必要になります。
こちらにその方法が紹介されています。
記事では、 When_a_HTTP_request_is_received は HTTP トリガーの例なので、ワークフローのトリガー名に応じて変更する。とあるので、そのままでは URL を取得できません。
正しい Callback URL の取得方法
一旦Portalを見にいきます。このmanualというのが重要です。

以下の Azure CLI コマンドを使えば、正しい Callback URL を取得できます。
#!/bin/bash
# サブスクリプションおよびリソース情報を設定
subscription='<SUBSCRIPTION_ID>'
resourceGroupName='<RESOURCE_GROUP_NAME>'
logicAppName='<LOGIC_APP_NAME>'
workflowName='<WORKFLOW_NAME>'
triggerName='<TRIGGER_NAME>' #ここがmanual
# 正しいトリガー名称(例: manual)を指定した Management API のエンドポイント URL を作成
uri="https://management.azure.com/subscriptions/${subscription}/resourceGroups/${resourceGroupName}/providers/Microsoft.Web/sites/${logicAppName}/hostruntime/runtime/webhooks/workflow/api/management/workflows/${workflowName}/triggers/${triggerName}/listCallbackUrl?api-version=2018-11-01"
# POST リクエストを実行し、レスポンスを取得
workflowDetails=$(az rest --method post --uri "$uri")
# jq を使用して Callback URL を抽出して表示
echo "$workflowDetails" | jq -r '.value'
ポイントは${triggerName} の部分を自分が設定したトリガー名に変更すること。
Logic App Consumption のように When_a_HTTP_request_is_received
では動かないので注意が必要です。
まとめ
- Logic App Standard では、HTTP トリガー名はユーザーが自由に決められる(例:manual)
- Consumption 型のように
Get-AzLogicAppTriggerCallbackUrl
コマンドは使えない - Azure CLI の
az rest
コマンドを使う必要がある - トリガー名を間違えると正しい URL が取得できない
- Ankit Gupta さんの記事では
When_a_HTTP_request_is_received
を指定していたが、Standard では環境によって異なるため注意
ディスカッション
コメント一覧
まだ、コメントがありません