Как использовать EventGridTrigger в консольном приложении WebJobs v3? - PullRequest
0 голосов
/ 29 апреля 2019

У меня есть консольное приложение .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. У меня есть несколько других функций WebJob, работающих в AKS, но они используют TimerTriggers или ServiceBusTriggers. Они работают нормально. Разница с EventGridTrigger заключается в том, что мне нужно добавить конечную точку WebHook в раздел сетки событий в Azure. Однако соответствующая конечная точка, по-видимому, не отображается в приложении WebJobs, которое я создал.

Я убедился, что порты 80 и 443 открыты в файле Docker.

EXPOSE 80
EXPOSE 443

Когда приложение развертывается в AKS, я также добавляю службу, которая включает статическую внешнюю конечную точку с полным доменным именем

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

Я пытался добавить WebHook из своей темы сетки событий на:

https://insys -web-job-get-weather-aks.westus.cloudapp.azure.com / выполнения / webhooks / EventGrid

но я получаю следующую ошибку:

Развертывание не выполнено со следующей ошибкой: {"code": "Url validation "," message ":" Попытка проверить предоставленную конечную точку https://insys -web-job-get-weather-aks.westus.cloudapp.azure.com / выполнения / webhooks / EventGrid не удалось. Для получения более подробной информации, посетите https://aka.ms/esvalidation."}

Чего мне не хватает?

Нужно ли настраивать необходимую конечную точку в методе Main. Я предположил, что b.AddEventGrid(); настраивал все, что нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...