Azure Event Grid トピックへのサブスクリプションとして Azure Function を実行するには、どのトリガー タイプを使用すればよいですか?
この機能は、Event Grid に関連するあらゆる場所で言及されていますが、チュートリアルやコード サンプルは見当たりません。
Azure Event Grid トピックへのサブスクリプションとして Azure Function を実行するには、どのトリガー タイプを使用すればよいですか?
この機能は、Event Grid に関連するあらゆる場所で言及されていますが、チュートリアルやコード サンプルは見当たりません。
この目的で Generic Webhook トリガーを使用することができます。
これがサンプル関数です。
function.json
:
{
"bindings": [
{
"type": "httpTrigger",
"direction": "in",
"webHookType": "genericJson",
"name": "req"
},
{
"type": "http",
"direction": "out",
"name": "res"
}
],
"disabled": false
}
C# 実装:
#r "Newtonsoft.Json"
using System;
using System.Net;
using Newtonsoft.Json;
public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
string jsonContent = await req.Content.ReadAsStringAsync();
var events = JsonConvert.DeserializeObject<GridEvent[]>(jsonContent);
if (req.Headers.GetValues("Aeg-Event-Type").First() == "SubscriptionValidation")
{
var code = events[0].Data["validationCode"];
return req.CreateResponse(HttpStatusCode.OK, new { validationResponse = code });
}
// Do whatever you need with events
foreach (var e in events)
log.Info(e.Id);
return req.CreateResponse(HttpStatusCode.OK);
}
public class GridEvent
{
public string Id { get; set; }
public string EventType { get; set; }
public string Subject { get; set; }
public DateTime EventTime { get; set; }
public Dictionary<string,string> Data { get; set; }
public string Topic { get; set; }
}
2 つの重要な点に注意してください。
GridEvent
イベント JSON を POCO に解析するカスタムクラスif
エンドポイントの検証を処理するブロック (Event Grid 要件)