HTTP によってトリガーされない関数を手動で実行する
この記事では、特殊な形式の HTTP 要求を介して、HTTP によってトリガーされない関数を手動で実行する方法について説明します。
開発中やトラブルシューティング中など、一部のコンテキストでは、間接的にトリガーされる Azure 関数を "オンデマンド" で実行することが必要になる場合があります。 間接的なトリガーの例として、スケジュールに対する関数、イベントの結果として実行される関数などがあります。
次の例では Postman が使用されていますが、cURL、Fiddler などの同様のツールを使用して HTTP 要求を送信できます。
この記事で説明する手順は、Azure portal の関数の [コードとテスト] タブの [テスト/実行] 機能を使用することと同じです。 また、Visual Studio Code を使用して、関数を手動で実行することもできます。
要求の場所を定義する
HTTP によってトリガーされない関数を実行するには、関数を実行するために Azure に要求を送信する方法が必要です。 この要求の送信に使用される URL には特定の形式があります。
- ホスト名: 関数アプリの発行場所。関数アプリの名前と、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 エンドポイントにのみキーを送信する必要があります。
Azure portal で関数アプリに移動し、 [アプリ キー] 、
_master
キーの順に選択します。[キーの編集] セクションで、キーの値をクリップボードにコピーして、 [OK] を選択します。
関数を呼び出す
Azure portal で、関数アプリの上部に移動し、関数を選択します。
[コードとテスト] を選択し、その後 [ログ] を選択します。 Postman から手動で関数を実行すると、ログに記録された関数のメッセージがここに表示されます。
Postman (または同等の HTTP 作成ツール) を開き、URL テキスト ボックスに要求の場所を入力します。
HTTP メソッドが POST に設定されていることを確認し、[ヘッダー] タブを選択し、次の 2 つのヘッダー キーと値のペアを追加します。
Key Value x-functions-key
クリップボードから貼り付けたマスター キーの値。 Content-Type
application/json
[本文] タブを選択し、要求の本文として
{ "input": "<TRIGGER_INPUT>" }
と入力します。指定する特定の
<TRIGGER_INPUT>
はトリガーの種類によって異なりますが、指定できるのは文字列、数値、またはブール値のみです。 Azure Service Bus などの JSON ペイロードを使用するサービスの場合、テスト JSON ペイロードをエスケープし、文字列としてシリアル化する必要があります。関数に入力データを渡さない場合でも、POST 要求の本文として空のディクショナリ
{}
を指定する必要があります。 詳しくは、 「HTTP によってトリガーされない関数を手動で実行する」をご覧ください。[Send] を選択します。
Postman から 202 Accepted の状態が報告されます。
次に、Azure portal で関数に戻ります。 ログを確認すると、関数の手動呼び出しによるメッセージが表示されます。
トリガーに送信されるデータにアクセスする方法は、トリガーの種類と関数言語によって異なります。 詳細については、特定トリガーの参照の例を参照してください。
次のステップ
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示