如何在WebJobs v3控制台应用程序中使用EventGridTrigger?

时间:2019-04-28 22:21:17

标签: .net-core dockerfile azure-webjobssdk azure-aks

我有一个.NET Core 2.2 WebJobs v3控制台应用程序,其中包括处理EventGridTrigger的功能。主要方法是:

static void Main(string[] args)
    {
        var builder = new HostBuilder();
        builder.ConfigureWebJobs(b =>
        {
            b.AddAzureStorageCoreServices();
            b.AddEventGrid();
        });
        builder.ConfigureLogging((context, b) =>
        {
            b.AddConsole();

            // If the key exists in settings, use it to enable Application Insights.
            var instrumentationKey = context.Configuration["APPINSIGHTS_INSTRUMENTATIONKEY"];
            if (!string.IsNullOrEmpty(instrumentationKey))
            {
                b.AddApplicationInsights(o => o.InstrumentationKey = instrumentationKey);
            }
        });
        var host = builder.Build();
        using (host)
        {
            host.Run();
        }
    }

函数Run方法是:

[FunctionName("ProcessWeatherRequest")]
    public static async Task Run([EventGridTrigger] EventGridEvent eventGridEvent, ILogger log)
    {
        log.LogInformation("InSysWebJobGetWeather.ProcessWeatherRequest EventGridTrigger function received an event.");
        log.LogInformation($"Subject: {eventGridEvent.Subject}");
        log.LogInformation($"Time: {eventGridEvent.EventTime}");
        log.LogInformation($"Data: {eventGridEvent.Data}");
    }

我正在使用Docker容器化应用程序,并尝试在Azure Kubernetes Service中运行它。我在AKS中运行其他几个WebJob函数,但它们使用TimerTriggers或ServiceBusTriggers。他们工作正常。与EventGridTrigger的区别在于,我需要将WebHook终结点添加到Azure上的事件网格主题。但是,我构建的WebJobs应用程序似乎没有公开适当的端点。

我确保在Docker文件中公开了端口80和443。

EXPOSE 80
EXPOSE 443

将应用程序部署到AKS时,我还添加了一个服务,该服务包括FQDN为

的静态外部终结点
  

insys-web-job-get-weather-aks.westus.cloudapp.azure.com

我试图将“事件网格主题”中的WebHook添加到:

https://insys-web-job-get-weather-aks.westus.cloudapp.azure.com/runtime/webhooks/EventGrid

但出现以下错误:

  

部署失败,出现以下错误:{“ code”:“ Url   验证”,“消息”:“尝试验证提供的端点   https://insys-web-job-get-weather-aks.westus.cloudapp.azure.com/runtime/webhooks/EventGrid   失败了有关更多详细信息,请访问https://aka.ms/esvalidation。“}

我想念什么?

是否需要在Main方法中配置所需的端点。我以为b.AddEventGrid();正在配置所需的内容。

0 个答案:

没有答案