経緯
ローカルで実行した EventGrid Trigger の Function に対して、直接 Http Request を送ることで処理を走らせることができます。
これは公式ドキュメント: How to work with Event Grid triggers and bindings in Azure Functions: Manually post the request に手順がまとめられています。
同様に Azure にデプロイした後も Http リクエストを投げれば手動で走らせられると動作確認などで何かと便利だと思って試したのですが、ドキュメントの手順から単に URL をデプロイ先のものに置き換えたのみでは HttpStatusCode 401 の応答が返ってきてしまい、期待通りに動きません。
そのため手動で走らせることは無理なのではないかと思っていたのですが、試行錯誤する中で実際には可能であることに気づいたので、方法をメモします。
試した環境
- C# (.NET6)
- Azure Function v4
私が個人的に慣れている構成で試してうまくいくことのみ確認していますが、恐らくは言語などを問わず同じ方法で可能なのではないかと思っています。(もしほかの環境でうまくいったということがあれば教えていただけると大変ありがたいです。)
方法
以下のように単に Function Key をクエリパラメーターに付与してあげるだけで期待通り処理が走ります。
@RESOURCE_NAME=<functionのリソース名>
@FUNCTION_NAME=<実行するFunctionの名前>
@CODE=<function の App Keys>
POST https://{{RESOURCE_NAME}}.azurewebsites.net/runtime/webhooks/EventGrid?functionName={{FUNCTION_NAME}}&code={{CODE}}
Content-Type: application/json
aeg-event-type: Notification
{
"id": "1",
"eventType": "aaaa",
"subject": "aaaa",
"eventTime": "1111-12-15T14:21:12+00:00",
"data": {
"tekitou": "atai",
},
"dataVersion": "1.0"
}