Azure Logic Apps で HTTP エンドポイントを使用してワークフローを呼び出すか、トリガーするか、または入れ子にするCall, trigger, or nest workflows with HTTP endpoints in Azure Logic Apps

ロジック アプリで同期 HTTP エンドポイントをトリガーとしてネイティブに公開することで、URL からロジック アプリをトリガーしたり呼び出したりすることができます。You can natively expose synchronous HTTP endpoints as triggers on logic apps so that you can trigger or call your logic apps through a URL. 呼び出し可能なエンドポイントのパターンを使用して、ロジック アプリのワークフローをネストすることもできます。You can also nest workflows in your logic apps by using a pattern of callable endpoints.

HTTP エンドポイントを作成するには、ロジック アプリで受信要求を受信できるように以下のトリガーを追加できます。To create HTTP endpoints, you can add these triggers so that your logic apps can receive incoming requests:

  • 要求Request

  • API 接続 WebhookAPI Connection Webhook

  • HTTP WebhookHTTP Webhook

    注意

    以下の例では要求トリガーを使用しますが、ここに示すどの HTTP トリガーでもご利用いただけます。また、すべての原則が他の種類のトリガーにも同様に適用されます。Although these examples use the Request trigger, you can use any of the listed HTTP triggers, and all principles identically apply to the other trigger types.

ロジック アプリ用の HTTP エンドポイントを設定するSet up an HTTP endpoint for your logic app

HTTP エンドポイントを作成するには、受信要求を受信できるトリガーを追加します。To create an HTTP endpoint, add a trigger that can receive incoming requests.

  1. Azure Portal にサインインします。Sign in to the Azure portal. ロジック アプリに移動して、ロジック アプリ デザイナーを開きます。Go to your logic app, and open Logic App Designer.

  2. ロジック アプリに受信要求を受信させるトリガーを追加します。Add a trigger that lets your logic app receive incoming requests. たとえば、ロジック アプリに要求トリガーを追加します。For example, add the Request trigger to your logic app.

  3. [要求本文の JSON スキーマ] で、トリガーが受信するペイロード (データ) の JSON スキーマを必要に応じて入力できます。Under Request Body JSON Schema, you can optionally enter a JSON schema for the payload (data) that you expect the trigger to receive.

    デザイナーは、このスキーマを使用してトークンを生成します。これらのトークンは、ロジック アプリで使用して、ワークフローを通じてトリガーからデータを消費したり、解析したり、渡したりすることができます。The designer uses this schema for generating tokens that your logic app can use to consume, parse, and pass data from the trigger through your workflow. 詳細については、JSON スキーマから生成されるトークンに関するトピックを参照してください。More about tokens generated from JSON schemas.

    この例では、デザイナーに表示される次のスキーマを入力します。For this example, enter the schema shown in the designer:

    {
      "type": "object",
      "properties": {
        "address": {
          "type": "string"
        }
      },
      "required": [
        "address"
      ]
    }
    

    要求アクションを追加する

    ヒント

    [サンプルのペイロードを使用してスキーマを生成する] を選択することで、jsonschema.net要求トリガーなどのツールから JSON のサンプル ペイロードのスキーマを生成することができます。You can generate a schema for a sample JSON payload from a tool like jsonschema.net, or in the Request trigger by choosing Use sample payload to generate schema. サンプル ペイロードを入力し、 [完了] を選択します。Enter your sample payload, and choose Done.

    たとえば、次のサンプル ペイロードを使用するとします。For example, this sample payload:

    {
       "address": "21 2nd Street, New York, New York"
    }
    

    これによって次のスキーマが生成されます。generates this schema:

    {
       "type": "object",
       "properties": {
          "address": {
             "type": "string" 
          }
       }
    }
    
  4. ロジック アプリを保存し、Save your logic app. [この URL に HTTP POST] に、次の例のように、生成されたコールバック URL が表示されます。Under HTTP POST to this URL, you should now find a generated callback URL, like this example:

    エンドポイント用に生成されたコールバック URL

    この URL には、認証に使用されるクエリ パラメーター内の Shared Access Signature (SAS) キーが含まれています。This URL contains a Shared Access Signature (SAS) key in the query parameters that are used for authentication. Azure Portal で、ロジック アプリの概要から HTTP エンドポイントの URL を取得することもできます。You can also get the HTTP endpoint URL from your logic app overview in the Azure portal. [トリガーの履歴] でトリガーを選択します。Under Trigger History, select your trigger:

    Azure Portal から HTTP エンドポイントの URL を取得する

    または、次の呼び出しによって URL を取得できます。Or you can get the URL by making this call:

    POST https://management.azure.com/{logic-app-resourceID}/triggers/{myendpointtrigger}/listCallbackURL?api-version=2016-06-01
    

トリガーの HTTP メソッドを変更するChange the HTTP method for your trigger

既定では、要求トリガーには HTTP POST 要求が必要ですが、他の HTTP メソッドを使用することができます。By default, the Request trigger expects an HTTP POST request, but you can use a different HTTP method.

注意

指定できるのは 1 つのメソッドの種類のみです。You can specify only one method type.

  1. 要求トリガーで、 [詳細オプションの表示] を選択します。On your Request trigger, choose Show advanced options.

  2. [メソッド] 一覧を開きます。Open the Method list. この例では、後で HTTP エンドポイントの URL をテストできるように、 [GET] を選択します。For this example, select GET so that you can test your HTTP endpoint's URL later.

    注意

    その他の HTTP メソッドを選択したり、ロジック アプリのカスタム メソッドを指定したりすることもできます。You can select any other HTTP method, or specify a custom method for your own logic app.

    HTTP メソッドを変更する

HTTP エンドポイントの URL を使用してパラメーターを受け取るAccept parameters through your HTTP endpoint URL

HTTP エンドポイントの URL でパラメーターを受け取る場合は、トリガーの相対パスをカスタマイズします。When you want your HTTP endpoint URL to accept parameters, customize your trigger's relative path.

  1. 要求トリガーで、 [詳細オプションの表示] を選択します。On your Request trigger, choose Show advanced options.

  2. [メソッド] に、要求で使用する HTTP メソッドを指定します。Under Method, specify the HTTP method that you want your request to use. この例では、メソッドをまだ選択していない場合は、HTTP エンドポイントの URL をテストできるように GET メソッドを選択します。For this example, select the GET method, if you haven't already, so that you can test your HTTP endpoint's URL.

    注意

    トリガーの相対パスを指定するときに、トリガーの HTTP メソッドも明示的に指定する必要があります。When you specify a relative path for your trigger, you must also explicitly specify an HTTP method for your trigger.

  3. [相対パス] に、customers/{customerID} など、URL で受け取るパラメーターの相対パスを指定します。Under Relative path, specify the relative path for the parameter that your URL should accept, for example, customers/{customerID}.

    HTTP メソッドとパラメーターの相対パスを指定する

  4. パラメーターを使用するには、応答アクションをロジック アプリに追加しますTo use the parameter, add a Response action to your logic app. (トリガーで、 [新しい手順] > [アクションの追加] > [応答] の順に選択します)。(Under your trigger, choose New step > Add an action > Response)

  5. 応答の本文に、トリガーの相対パスで指定したパラメーターのトークンを入力します。In your response's Body, include the token for the parameter that you specified in your trigger's relative path.

    たとえば、Hello {customerID} を返すには、応答の本文Hello {customerID token} で更新します。For example, to return Hello {customerID}, update your response's Body with Hello {customerID token}. 動的なコンテンツの一覧が表示され、customerID トークンが選択肢として表示されます。The dynamic content list should appear and show the customerID token for you to select.

    応答本文にパラメーターを追加する

    本文は次の例のようになります。Your Body should look like this example:

    パラメーターが追加された応答本文

  6. ロジック アプリを保存し、Save your logic app.

    HTTP エンドポイントの URL に以下の例のような相対パスが含まれるようになりました。Your HTTP endpoint URL now includes the relative path, for example:

    https://prod-00.southcentralus.logic.azure.com/workflows/f90cb66c52ea4e9cabe0abf4e197deff/triggers/manual/paths/invoke/customers/{customerID}...https://prod-00.southcentralus.logic.azure.com/workflows/f90cb66c52ea4e9cabe0abf4e197deff/triggers/manual/paths/invoke/customers/{customerID}...

  7. HTTP エンドポイントをテストするには、更新した URL をコピーして、別のブラウザー ウィンドウに貼り付けます。ただし、{customerID}123456 で置き換えて、Enter キーを押します。To test your HTTP endpoint, copy and paste the updated URL into another browser window, but replace {customerID} with 123456, and press Enter.

    ブラウザーには次のテキストが表示されます。Your browser should show this text:

    Hello 123456

ロジック アプリ用に JSON スキーマから生成されるトークンTokens generated from JSON schemas for your logic app

要求トリガーに JSON スキーマを指定すると、ロジック アプリ デザイナーでそのスキーマのプロパティ用のトークンが生成されます。When you provide a JSON schema in your Request trigger, the Logic App Designer generates tokens for properties in that schema. これらのトークンは、ロジック アプリのワークフローを介してデータを渡すために使用できます。You can then use those tokens for passing data through your logic app workflow.

この例では、title プロパティと name プロパティを JSON スキーマに追加すると、そのトークンをワークフローの後の手順で使用できるようになります。For this example, if you add the title and name properties to your JSON schema, their tokens are now available to use in later workflow steps.

完全な JSON スキーマを次に示します。Here is the complete JSON schema:

{
   "type": "object",
   "properties": {
      "address": {
         "type": "string"
      },
      "title": {
         "type": "string"
      },
      "name": {
         "type": "string"
      }
   },
   "required": [
      "address",
      "title",
      "name"
   ]
}

ロジック アプリ用に入れ子になったワークフローを作成するCreate nested workflows for logic apps

要求を受信できる他のロジック アプリを追加することで、ロジック アプリでワークフローを入れ子にできます。You can nest workflows in your logic app by adding other logic apps that can receive requests. このようなロジック アプリを組み込むには、 [Azure Logic Apps - Logic Apps ワークフローを選択する] アクションをトリガーに追加します。To include these logic apps, add the Azure Logic Apps - Choose a Logic Apps workflow action to your trigger. これで、対象のロジック アプリから選択できます。You can then select from eligible logic apps.

別のロジック アプリを追加する

HTTP エンドポイント経由でロジック アプリを呼び出しまたはトリガーするCall or trigger logic apps through HTTP endpoints

HTTP エンドポイントを作成したら、完全な URL への POST メソッドを通じてロジック アプリをトリガーすることができます。After you create your HTTP endpoint, you can trigger your logic app through a POST method to the full URL. ロジック アプリでは、直接アクセス エンドポイントの組み込みがサポートされています。Logic apps have built-in support for direct-access endpoints.

注意

ロジック アプリを手動で実行するには、ロジック アプリ デザイナーまたはロジック アプリ コード ビューのツール バーで [実行] をクリックします。To manually run a logic app at any time, on the Logic App Designer or Logic App Code View toolbar, choose Run.

受信要求からコンテンツを参照するReference content from an incoming request

コンテンツの種類が application/json である場合は、受信要求からプロパティを参照できます。If the content's type is application/json, you can reference properties from the incoming request. それ以外の場合は、コンテンツは他の API に渡すことができる単一バイナリ ユニットとして扱われます。Otherwise, content is treated as a single binary unit that you can pass to other APIs. ワークフロー内でコンテンツを参照するには、このコンテンツを変換する必要があります。To reference this content inside the workflow, you must convert that content. たとえば、application/xml コンテンツを渡す場合は、@xpath() を使用して XPath 抽出を行ったり、@json() を使用して XML から JSON に変換することができます。For example, if you pass application/xml content, you can use @xpath() for an XPath extraction, or @json() for converting XML to JSON. 詳しくは、コンテンツの種類に関する記事をご覧ください。Learn about working with content types.

受信要求から出力を取得するには、@triggerOutputs() 関数を使用できます。To get the output from an incoming request, you can use the @triggerOutputs() function. 出力の例を次に示します。The output might look like this example:

{
    "headers": {
        "content-type" : "application/json"
    },
    "body": {
        "myProperty" : "property value"
    }
}

body プロパティだけにアクセスするには、@triggerBody() ショートカットを使用できます。To access the body property specifically, you can use the @triggerBody() shortcut.

要求に応答するRespond to requests

ロジック アプリを起動する要求に対して、呼び出し元にコンテンツを返すことで応答した方がよい場合があります。You might want to respond to certain requests that start a logic app by returning content to the caller. 状態コード、ヘッダー、および応答の本文を構成するには、応答アクションを使用できます。To construct the status code, header, and body for your response, you can use the Response action. このアクションは、ワークフローの最後のみでなく、ロジック アプリの任意の場所に使用できます。This action can appear anywhere in your logic app, not just at the end of your workflow.

注意

ロジック アプリに応答が含まれていない場合は、HTTP エンドポイントが "直ちに" 202 Accepted 状態で応答します。If your logic app doesn't include a Response, the HTTP endpoint responds immediately with a 202 Accepted status. また、元の要求で応答を受け取るには、応答に必要なすべての手順が要求タイムアウト制限以内に完了する必要があります (ワークフローを入れ子になったロジック アプリとして呼び出した場合を除く)。Also, for the original request to get the response, all steps required for the response must finish within the request timeout limit unless you call the workflow as a nested logic app. この制限以内に応答が返されなかった場合、受信要求はタイムアウトになり、HTTP 応答 408 Client timeout を受信します。If no response happens within this limit, the incoming request times out and receives the HTTP response 408 Client timeout. 入れ子になったロジック アプリの場合は、待機時間にかかわらず、親ロジック アプリが応答の完了を待機します。For nested logic apps, the parent logic app continues to wait for a response until completed, regardless of how much time is required.

応答を作成するConstruct the response

応答本文には、複数のヘッダーと任意の種類のコンテンツを含めることができます。You can include more than one header and any type of content in the response body. この応答の例では、ヘッダーで、応答のコンテンツの種類として application/json を指定しています。In the example response, the header specifies that the response has content type application/json. 本文には、要求トリガー用に前もって更新した JSON スキーマに基づいて、titlename が含まれます。and the body contains title and name, based on the JSON schema updated previously for the Request trigger.

HTTP 応答アクション

応答には、次のプロパティがあります。Responses have these properties:

プロパティProperty 説明Description
StatusCodestatusCode 受信要求に応答するための HTTP 状態コードを指定します。Specifies the HTTP status code for responding to the incoming request. 2xx、4xx、または 5xx で始まる任意の有効な状態コードを使用できます。This code can be any valid status code that starts with 2xx, 4xx, or 5xx. ただし、3xx 状態コードは指定できません。However, 3xx status codes are not permitted.
headersheaders 応答に含める任意の数のヘッダーを定義します。Defines any number of headers to include in the response.
bodybody 文字列、JSON オブジェクト、または前のステップから参照されるバイナリ コンテンツを指定できる body オブジェクトを指定します。Specifies a body object that can be a string, a JSON object, or even binary content referenced from a previous step.

ここで、応答アクションの JSON スキーマの例を示します。Here's what the JSON schema looks like now for the Response action:

"Response": {
   "inputs": {
      "body": {
         "title": "@{triggerBody()?['title']}",
         "name": "@{triggerBody()?['name']}"
      },
      "headers": {
           "content-type": "application/json"
      },
      "statusCode": 200
   },
   "runAfter": {},
   "type": "Response"
}

ヒント

ロジック アプリの完全な JSON 定義を表示するには、ロジック アプリ デザイナーで、 [コード ビュー] を選択します。To view the complete JSON definition for your logic app, on the Logic App Designer, choose Code view.

Q & AQ & A

Q:URL のセキュリティはどうなっていますか。Q: What about URL security?

A:Azure では、ロジック アプリのコールバック URL が、Shared Access Signature (SAS) を使用して安全に生成されます。A: Azure securely generates logic app callback URLs using a Shared Access Signature (SAS). この署名はクエリ パラメーターとして渡され、ロジック アプリが起動する前に検証される必要があります。This signature passes through as a query parameter and must be validated before your logic app can fire. Azure では、ロジック アプリごとの秘密キー、トリガー名、および実行される操作の一意の組み合わせを使用して署名が生成されます。Azure generates the signature using a unique combination of a secret key per logic app, the trigger name, and the operation that's performed. そのため、ロジック アプリの秘密キーにアクセスできなければ、有効な署名を生成することはできません。So unless someone has access to the secret logic app key, they cannot generate a valid signature.

重要

運用環境のセキュリティで保護されたシステムでは、次の理由により、ブラウザーから直接ロジック アプリを呼び出さないことを強くお勧めします。For production and secure systems, we strongly recommend against calling your logic app directly from the browser because:

  • 共有アクセス キーが URL に表示されます。The shared access key appears in the URL.
  • ロジック アプリのユーザー間でドメインが共有されるため、セキュリティで保護されたコンテンツ ポリシーを管理できません。You can't manage secure content policies due to shared domains across Logic App customers.

Q:HTTP エンドポイントをさらに構成することは可能でしょうか。Q: Can I configure HTTP endpoints further?

A:はい、HTTP エンドポイントでは、API Management を通じてより高度な構成をサポートしています。A: Yes, HTTP endpoints support more advanced configuration through API Management. このサービスでは、次のような、ロジック アプリを含むすべての API の一貫した管理、カスタム ドメイン名の設定、他の認証方法の使用などの機能も提供します。This service also offers the capability for you to consistently manage all your APIs, including logic apps, set up custom domain names, use more authentication methods, and more, for example:

Q:2014 年 12 月 1 日のプレビューからスキーマが移行されたとき、どのように変更されましたか。Q: What changed when the schema migrated from the December 1, 2014 preview?

A:変更内容を以下にまとめました。A: Here's a summary about these changes:

2014 年 12 月 1 日のプレビューDecember 1, 2014 preview 2016 年 6 月 1 日June 1, 2016
HTTP リスナー API アプリをクリックするClick HTTP Listener API App [手動トリガー] をクリックする (API アプリは不要)Click Manual trigger (no API App required)
HTTP リスナー設定 "Sends response automatically"HTTP Listener setting "Sends response automatically" ワークフロー定義に応答アクションを含めるまたは含めないEither include a Response action or not in the workflow definition
基本認証または OAuth 認証を構成するConfigure Basic or OAuth authentication API Management によるvia API Management
HTTP メソッドを構成するConfigure HTTP method [詳細オプションの表示] で HTTP メソッドを選択するUnder Show advanced options, choose an HTTP method
相対パスを構成するConfigure relative path [詳細オプションの表示] で、相対パスを追加するUnder Show advanced options, add a relative path
受信本文を @triggerOutputs().body.Content を通じて参照するReference the incoming body through @triggerOutputs().body.Content @triggerOutputs().body を通じて参照するReference through @triggerOutputs().body
Send HTTP response アクションSend HTTP response action on the HTTP Listener [HTTP 要求に応答] をクリックする (API アプリは不要)Click Respond to HTTP request (no API App required)

問い合わせGet help

Azure Logic Apps フォーラムでは、質問の投稿や質問への回答を行うことができるほか、他の Azure Logic Apps ユーザーがどのようなことを行っているかがわかります。To ask questions, answer questions, and learn what other Azure Logic Apps users are doing, visit the Azure Logic Apps forum.

Azure Logic Apps ユーザー フィードバック サイトでアイデアへの投票やアイデアの投稿を行って、Azure Logic Apps とコネクタの改善にご協力ください。To help improve Azure Logic Apps and connectors, vote on or submit ideas at the Azure Logic Apps user feedback site.

次の手順Next steps