如何让 Azure 事件网格触发 Azure Function?

Mik*_*kov 5 azure azure-functions azure-eventgrid

我应该使用哪种触发器类型来运行 Azure 函数作为 Azure 事件网格主题的订阅?

与事件网格相关的任何地方都提到了此功能,但我没有看到任何教程或代码示例。

Rom*_*iss 4

using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Azure.WebJobs.Extensions.EventGrid;
using Newtonsoft.Json;

namespace FunctionApp3
{
   public static class Function2
   {

      [FunctionName("Function2")]
      public static void Run([EventGridTrigger()]EventGridEvent eventGridEvent, TraceWriter log)
      {
        log.Info($"EventGridEvent\n\tId:{eventGridEvent.Id}\n\tTopic:{eventGridEvent.Topic}\n\tSubject:{eventGridEvent.Subject}\n\tType:{eventGridEvent.EventType}\n\tData:{JsonConvert.SerializeObject(eventGridEvent.Data)}");

      }
   }
}
Run Code Online (Sandbox Code Playgroud)

使用天蓝色门户:

运行.cs:

#r "Microsoft.Azure.WebJobs.Extensions.EventGrid"
#r "Newtonsoft.Json"

using Microsoft.Azure.WebJobs.Extensions.EventGrid;
using Newtonsoft.Json;

public static void Run(EventGridEvent eventGridEvent, TraceWriter log)
{
    //log.Info(eventGridEvent.ToString());

    var jsondata = JsonConvert.SerializeObject(eventGridEvent.Data);
    var tmp = new { make = "", model = "", test = ""};   
    var data = JsonConvert.DeserializeAnonymousType(jsondata, tmp);

    log.Info($"Data = make:{data.make}, model:{data.model}, test:{data.test}");
    log.Info($"EventGridEvent\n\tId:{eventGridEvent.Id}\n\tTopic:{eventGridEvent.Topic}\n\tSubject:{eventGridEvent.Subject}\n\tType:{eventGridEvent.EventType}\n\tData:{jsondata}");   
}
Run Code Online (Sandbox Code Playgroud)

函数.json:

   {
     "bindings": [
     {
       "type": "eventGridTrigger",
       "name": "eventGridEvent",
       "direction": "in"
     }
    ],
    "disabled": false
   }
Run Code Online (Sandbox Code Playgroud)

测试样品:

{
    "Topic": null,
    "Subject": "/myapp/vehicles/motorcycles",    
    "Id": "b68529f3-68cd-4744-baa4-3c0498ec19e2",
    "EventType": "recordInserted",
    "EventTime": "2017-06-26T18:41:00.9584103Z",
    "Data":{
      "make": "Ducati",
      "model": "Monster",
      "test":"-----------"
    }
 }
Run Code Online (Sandbox Code Playgroud)

最后一步是在集成页面中创建事件网格订阅 URL:

在此输入图像描述