Event Grid ハンドラーをローカルでテストする
Event Grid でトリガーされる Azure 関数をローカルでテストするのは、複雑になる可能性があります。 フローをテストするためにイベントを何度も何度もトリガーしたくはないでしょう。 これらのイベントをトリガーすると、SMS を送信したり電話をかけたりするなどコストがかかるイベントを実行しなければならないため、高額になってしまう可能性もあります。 テストに役立つように、Postman を使用して、Event Grid イベントに似たペイロードで Azure 関数をトリガーする方法について紹介します。
前提条件
Azure 関数は、いくつかのテスト イベントでテストしたい場合も、あるいはフロー全体をローカルでテストしたい場合 (Visual Studio Code で F5
を押してローカルで実行する) も、Azure で実行できます。 外部でトリガーされた webhook を使用してフロー全体をテストする場合は、ngrok を使用してローカルで実行されている Azure 関数をパブリックに公開し、インターネット ソース (Azure Event WebHooks の例) によってトリガーできるようにする必要があります。 次のコマンドを実行して ngrok を構成します。
ngrok http 7071
開発リソースを公開しても安全とは見なされない可能性があることに注意してください。 そのため、次の要求を呼び出すことで、ngrok なしでワークフロー全体をローカルで実行することもできます。
http://localhost:7071/runtime/webhooks/EventGrid?functionName={functionname}
Postman を構成する
Postman を開いて新しいリクエストを作成します。
POST
メソッドを選択します。Azure 関数の URL を入力します。 Azure で実行中の Azure 関数の URL でもよいし、ローカルで実行している場合は ngrok URL でも構いません。 関数名を URL の末尾に、
/runtime/webhooks/EventGrid?functionName=<<FUNCTION_NAME>>
のように追加してください。Body
タブを選択して、raw
とJSON
をドロップダウンから選択します。 本文で、トリガーしたいイベントのテスト スキーマを追加します。 たとえば、テストしている Azure 関数が SMS イベントを受け取ることによりトリガーされる場合は、次のように追加します。{ "id": "Incoming_20200918002745d29ebbea-3341-4466-9690-0a03af35228e", "topic": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/acse2e/providers/microsoft.communication/communicationservices/{communication-services-resource-name}", "subject": "/phonenumber/15555555555", "data": { "MessageId": "Incoming_20200918002745d29ebbea-3341-4466-9690-0a03af35228e", "From": "15555555555", "To": "15555555555", "Message": "Great to connect with Azure Communication Services events", "ReceivedTimestamp": "2020-09-18T00:27:45.32Z" }, "eventType": "Microsoft.Communication.SMSReceived", "dataVersion": "1.0", "metadataVersion": "1", "eventTime": "2020-09-18T00:27:47Z" }
Azure Communication Service に使用されるさまざまなイベントの種類の詳細については、このドキュメントをご覧ください。
Headers
タブを選択して、次のヘッダーを追加します。Content-Type
:application/json
aeg-event-type
:Notification
Send
ボタンを選択してイベントをトリガーします。この時点で、イベントが Azure 関数でトリガーするはずです。 Azure 関数の実行を調べることでイベントを検証することができます。 これで、関数はそのジョブを正しく行っていることを確認できます。