HTTP によってトリガーされない関数を手動で実行する

この記事では、特殊な形式の HTTP 要求を介して、HTTP によってトリガーされない関数を手動で実行する方法について説明します。

開発中やトラブルシューティング中など、一部のコンテキストでは、間接的にトリガーされる Azure 関数を "オンデマンド" で実行することが必要になる場合があります。 間接的なトリガーの例として、スケジュールに対する関数イベントの結果として実行される関数などがあります。

次の例では Postman が使用されていますが、cURLFiddler などの同様のツールを使用して HTTP 要求を送信できます。

この記事で説明する手順は、Azure portal の関数の [コードとテスト] タブの [テスト/実行] 機能を使用することと同じです。 また、Visual Studio Code を使用して、関数を手動で実行することもできます

要求の場所を定義する

HTTP によってトリガーされない関数を実行するには、関数を実行するために Azure に要求を送信する方法が必要です。 この要求の送信に使用される URL には特定の形式があります。

Define the request location: host name + folder path + function name

  • ホスト名: 関数アプリの発行場所。関数アプリの名前と、azurewebsites.net またはカスタム ドメインから構成されます。 ステージングに使用されるデプロイ スロットを使用する場合、ホスト名部分は運用稼働のホスト名に -<slotname> を追加したものになります。 前の例では、staging という名前のスロットの URL は myfunctiondemos-staging.azurewebsites.net になります。
  • フォルダー パス: HTTP によってトリガーされない関数に HTTP 要求を介してアクセスするには、パス admin/functions から要求を送信する必要があります。 /admin/ パスの下にある API には、認可されている場合にのみアクセスできます。
  • 関数名: 実行する関数の名前。

関数アプリで管理者エンドポイントに要求を行う場合は、次の考慮事項が適用されます。

  • /admin/ パスの下の任意のエンドポイントに要求する場合は、要求の x-functions-key ヘッダーにアプリのマスター キーを指定する必要があります。
  • ローカルで実行する場合、認可は必須ではなく、関数のマスター キーも不要です。 x-functions-key ヘッダーを省略して、直接関数を呼び出すことができます。
  • デプロイ スロット内の関数アプリのエンドポイントにアクセスする場合は、スロット固有のマスター キーと共に、要求 URL でスロット固有のホスト名を使用してください。

マスター キーを取得する

マスター キーは、Azure portal または Azure CLI を使用して取得できます。

注意事項

マスター キーによって付与された関数 app の権限が昇格しているため、このキーを第三者と共有したり、アプリケーションに配布したりしないでください。 HTTPS エンドポイントにのみキーを送信する必要があります。

  1. Azure portal で関数アプリに移動し、 [アプリ キー]_master キーの順に選択します。

    Locate the master key to copy.

  2. [キーの編集] セクションで、キーの値をクリップボードにコピーして、 [OK] を選択します。

    Copy the master key to the clipboard.

関数を呼び出す

  1. Azure portal で、関数アプリの上部に移動し、関数を選択します。

  2. [コードとテスト] を選択し、その後 [ログ] を選択します。 Postman から手動で関数を実行すると、ログに記録された関数のメッセージがここに表示されます。

    Screenshot that shows the 'Code + Test' page with a message from the logs displayed.

  3. Postman (または同等の HTTP 作成ツール) を開き、URL テキスト ボックスに要求の場所を入力します。

  4. HTTP メソッドが POST に設定されていることを確認し、[ヘッダー] タブを選択し、次の 2 つのヘッダー キーと値のペアを追加します。

    Key Value
    x-functions-key クリップボードから貼り付けたマスター キーの値。
    Content-Type application/json

    Postman headers settings.

  5. [本文] タブを選択し、要求の本文として { "input": "<TRIGGER_INPUT>" } と入力します。

    Postman body settings.

    指定する特定の <TRIGGER_INPUT> はトリガーの種類によって異なりますが、指定できるのは文字列、数値、またはブール値のみです。 Azure Service Bus などの JSON ペイロードを使用するサービスの場合、テスト JSON ペイロードをエスケープし、文字列としてシリアル化する必要があります。

    関数に入力データを渡さない場合でも、POST 要求の本文として空のディクショナリ {} を指定する必要があります。 詳しくは、 「HTTP によってトリガーされない関数を手動で実行する」をご覧ください。

  6. [Send] を選択します。

    Send a request with Postman.

    Postman から 202 Accepted の状態が報告されます。

  7. 次に、Azure portal で関数に戻ります。 ログを確認すると、関数の手動呼び出しによるメッセージが表示されます。

    View the logs to see the master key test results.

トリガーに送信されるデータにアクセスする方法は、トリガーの種類と関数言語によって異なります。 詳細については、特定トリガーの参照の例を参照してください。

次のステップ