Azure Logic Apps で HTTP Webhook を使用してイベントがワークフローを実行するのをサブスクライブして待機する
適用対象: Azure Logic Apps (従量課金プラン + Standard)
そのエンドポイントを呼び出すサービス エンドポイントまたはアクションを定期的にチェックまたは "ポーリング" するトリガーを使用するのではなく、サービス エンドポイントにサブスクライブし、特定のイベントを待機して、ワークフローで特定のアクションを実行する HTTP Webhook トリガーまたはアクションを使用できます。
Webhook ベースのワークフローの例を次に示します。
- Azure Event Hubs からイベントが到着するのを待機してからワークフローの実行をトリガーする。
- 承認を待ってからワークフローを続行する。
このガイドでは、ワークフローがサービス エンドポイントでのイベントを受信してそれに応答できるように HTTP Webhook トリガーと Webhook アクションを使用する方法について説明します。
Webhook のしくみ
Webhook トリガーは、イベントに基づいており、新しいデータやイベントの定期的な確認 (ポーリング) に依存しません。 Webhook トリガーを空のワークフローに追加してからワークフローを保存した後、または無効にしたロジック アプリ リソースを再度有効にした後、Webhook トリガーは、そのエンドポイントにコールバック URL を登録することによって、指定されたサービス エンドポイントにサブスクライブします。 その後、このトリガーは、そのサービス エンドポイントが URL を呼び出すまで待機し、呼び出しが発生するとワークフローの開始がトリガーされます。 要求トリガーと同様に、webhook トリガーはすぐに起動します。 次のアクションを手動で実行しない限り、Webhook トリガーもサービス エンドポイントにサブスクライブされたままです。
- トリガーのパラメーター値を変更します。
- トリガーを削除し、ワークフローを保存します。
- ロジック アプリ リソースを無効にします。
webhook トリガーと同様に、Webhook アクションの動作もイベントに基づいています。 Webhook アクションを既存のワークフローに追加してからワークフローを保存した後、または無効にしたロジック アプリ リソースを再度有効にした後、Webhook アクションは、そのエンドポイントにコールバック URL を登録することによって、指定されたサービス エンドポイントにサブスクライブします。 ワークフローが実行されると、Webhook アクションがワークフローを一時停止し、サービス エンドポイントが URL を呼び出すまで待機した後、ワークフローの実行が再開されます。 Webhook アクションは、次の条件が発生すると、サービス エンドポイントからサブスクライブ解除します。
- Webhook アクションが正常に終了した。
- 応答を待機しているときにワークフローの実行がキャンセルされた。
- ワークフロー実行がタイムアウトする前。
- Webhook トリガーによって入力として使用される Webhook アクション パラメーター値を変更します。
たとえば、Office 365 Outlook コネクタの承認メールの送信アクションは、このパターンに従う Webhook アクションの一例です。 Webhook アクションを使用することで、このパターンをあらゆるサービスに適用できます。
詳しくは、次のドキュメントをご覧ください。
トランスポート層セキュリティ (TLS) (以前の Secure Sockets Layer (SSL)) や Microsoft Entra ID Open Authentication (Microsoft Entra ID OAuth) などの、ロジック アプリへの受信呼び出しの暗号化、セキュリティ、認可については、「アクセスとデータのセキュリティ保護 - 要求ベースのトリガーへの受信呼び出しへのアクセス」を参照してください。
コネクタに関するテクニカル リファレンス
トリガーとアクションのパラメーターの詳細については、HTTP Webhook のパラメーターに関するページを参照してください。
前提条件
Azure アカウントとサブスクリプション。 Azure サブスクリプションがない場合は、無料の Azure アカウントにサインアップしてください。
必要に応じてワークフローの Webhook トリガーまたはワークフローの Webhook アクションの Webhook サブスクライブおよびサブスクライブ解除パターンをサポートする、既にデプロイ済みのエンドポイントまたは API の URL
ターゲット エンドポイントで特定のイベントを待機する Standard または従量課金ロジック アプリ ワークフロー。 HTTP Webhook トリガーで開始するには、空のワークフローを含むロジック アプリを作成します。 HTTP Webhook アクションを使うには、任意のトリガーを使って対象のワークフローを開始します。 この例では、最初のステップとして HTTP トリガーを使用します。
HTTP Webhook トリガーの追加
この組み込みトリガーは、ターゲット サービスでサブスクライブ エンドポイントを呼び出し、そのコールバック URL をターゲット サービスに登録します。 その後、ワークフローは、ターゲット サービスがコールバック URL に HTTP POST
要求を送信するのを待ちます。 このイベントが発生すると、トリガーが起動され、要求内のすべてのデータがワークフローに渡されます。
Azure portal で、Standard ロジック アプリと空のワークフローをデザイナーで開きます。
こちらの一般的な手順に従って、HTTP Webhook という名前のトリガーをワークフローに追加します。
この例では、このステップの名前がよりわかりやすくなるように、トリガー名を HTTP Webhook trigger に変更します。 また、この例では後で HTTP Webhook アクションを追加します。どちらの名前も一意である必要があります。
サブスクライブおよびサブスクライブ解除の呼び出しに使用する HTTP Webhook トリガー パラメーターの値を指定します。
プロパティ Required 説明 サブスクライブ - メソッド はい ターゲット エンドポイントをサブスクライブするときに使用するメソッド サブスクライブ - URI はい ターゲット エンドポイントにサブスクライブするために使用する URL サブスクライブ - 本文 いいえ サブスクライブ要求に含めるメッセージ本文。 この例には、ロジック アプリであるサブスクライバーを一意に識別するコールバック URL が含まれており、 @listCallbackUrl()
式を使用してロジック アプリのコールバック URL を取得しています。サブスクライブ解除 - メソッド いいえ ターゲット エンドポイントからサブスクライブ解除するときに使用するメソッド サブスクライブ解除 - URI いいえ ターゲット エンドポイントからサブスクライブ解除するために使用する URL サブスクライブ解除 - 本文 いいえ サブスクライブ解除の要求に含めるオプションのメッセージ本文
注意: このプロパティは、listCallbackUrl()
関数の使用をサポートしていません。 ただし、トリガーによって自動的にヘッダー (x-ms-client-tracking-id
およびx-ms-workflow-operation-name
) が含まれ、送信されます。このヘッダーは、ターゲット サービスがサブスクライバーを一意に識別するために使用されます。Note
[サブスクライブ解除 - メソッド] と [サブスクライブ解除 - URI] プロパティについては、[高度なパラメーター] の一覧を開いてアクションにそれらを追加します。
たとえば、次のトリガーには、サブスクライブおよびサブスクライブ解除の操作を実行するときに使用するメソッド、URI、メッセージ本文が含まれています。
認証を使用する必要がある場合は、[サブスクライブ - 認証] と [サブスクライブ解除 - 認証] プロパティを追加します。 HTTP Webhook に使用できる認証の種類の詳細については、送信呼び出しへの認証の追加に関するページを参照してください。
トリガーが起動したときに実行されるアクションを使用して、ワークフローを引き続き構築します。
完了したら、ワークフローを保存します。 デザイナーのツール バーで、 [保存] を選択します。
ワークフローを保存すると、ターゲット サービスでサブスクライブ エンドポイントが呼び出され、コールバック URL が登録されます。 その後、ワークフローは、ターゲット サービスがコールバック URL に HTTP POST
要求を送信するのを待ちます。 このイベントが発生すると、トリガーが起動され、要求内のすべてのデータがワークフローに渡されます。 この操作が正常に完了すると、トリガーはエンドポイントからサブスクライブ解除され、ワークフローでは次のアクションが続行されます。
HTTP Webhook アクションの追加
この組み込みアクションは、ターゲット サービスでサブスクライブ エンドポイントを呼び出し、そのコールバック URL をターゲット サービスに登録します。 その後、ワークフローは一時停止し、ターゲット サービスがコールバック URL に HTTP POST
要求を送信するのを待ちます。 このイベントが発生すると、アクションは要求内のすべてのデータをワークフローに渡します。 操作が正常に完了すると、アクションはエンドポイントからサブスクライブ解除され、ワークフローでは次のアクションが続行されます。
この例では、最初のステップとして HTTP Webhook トリガーを使用しています。
Azure portal で、Standard ロジック アプリのワークフローをデザイナーで開きます。
こちらの一般的な手順に従って、HTTP Webhook という名前のアクションをワークフローに追加します。
この例では、このステップの名前がわかりやすくなるように、アクション名を HTTP Webhook action に変更します。
HTTP Webhook アクション パラメーターの値を指定します。これは、サブスクライブおよびサブスクライブ解除の呼び出しに使用する HTTP Webhook トリガー パラメーターに似ています。
プロパティ Required 説明 サブスクライブ - メソッド はい ターゲット エンドポイントをサブスクライブするときに使用するメソッド サブスクライブ - URI はい ターゲット エンドポイントにサブスクライブするために使用する URL サブスクライブ - 本文 いいえ サブスクライブ要求に含めるメッセージ本文。 この例には、ロジック アプリであるサブスクライバーを一意に識別するコールバック URL が含まれており、 @listCallbackUrl()
式を使用してロジック アプリのコールバック URL を取得しています。サブスクライブ解除 - メソッド いいえ ターゲット エンドポイントからサブスクライブ解除するときに使用するメソッド サブスクライブ解除 - URI いいえ ターゲット エンドポイントからサブスクライブ解除するために使用する URL サブスクライブ解除 - 本文 いいえ サブスクライブ解除の要求に含めるオプションのメッセージ本文
注意: このプロパティは、listCallbackUrl()
関数の使用をサポートしていません。 ただし、アクションによってヘッダー (x-ms-client-tracking-id
およびx-ms-workflow-operation-name
) が自動的に送信されます。このヘッダーは、ターゲット サービスがサブスクライバーを一意に識別するために使用されます。Note
[サブスクライブ解除 - メソッド] と [サブスクライブ解除 - URI] プロパティについては、[高度なパラメーター] の一覧を開いてアクションにそれらを追加します。
たとえば、次のアクションには、サブスクライブおよびサブスクライブ解除の操作を実行するときに使用するメソッド、URI、メッセージ本文が含まれています。
その他のアクション プロパティを追加するには、[高度なパラメーター] の一覧を開きます。
たとえば、認証を使用する必要がある場合は、サブスクライブ - 認証とサブスクライブ解除 - 認証プロパティを追加します。 HTTP Webhook に使用できる認証の種類の詳細については、送信呼び出しへの認証の追加に関するページを参照してください。
完了したら、ワークフローを保存します。 デザイナーのツール バーで、 [保存] を選択します。
このアクションが実行されると、ワークフローはターゲット サービスでサブスクライブ エンドポイントを呼び出し、コールバック URL を登録します。 その後、ワークフローは一時停止し、ターゲット サービスがコールバック URL に HTTP POST
要求を送信するのを待ちます。 このイベントが発生すると、アクションは要求内のすべてのデータをワークフローに渡します。 操作が正常に完了すると、アクションはエンドポイントからサブスクライブ解除され、ワークフローでは次のアクションが続行されます。
トリガーとアクションの出力
ここでは、以下の情報を返す HTTP Webhook トリガーまたはアクションからの出力の詳細情報を示します。
プロパティ名 | 種類 | 説明 |
---|---|---|
headers | object | 要求のヘッダー |
body | object | 要求の本文の内容を含むオブジェクト |
状態コード | int | 要求の状態コード |
状態コード | 説明 |
---|---|
200 | OK |
202 | Accepted |
400 | Bad request |
401 | 権限がありません |
403 | 許可されていません |
404 | Not Found |
500 | 内部サーバー エラー。 不明なエラーが発生しました。 |