5

Azure Event Grid トピックへのサブスクリプションとして Azure Function を実行するには、どのトリガー タイプを使用すればよいですか?

この機能は、Event Grid に関連するあらゆる場所で言及されていますが、チュートリアルやコード サンプルは見当たりません。

4

2 に答える 2

4

この目的で 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 要件)
于 2017-10-05T15:19:57.710 に答える