У меня есть консольное приложение .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();
настраивал все, что нужно.