Сетка событий Событие Microsoft.EventHub.CaptureFileCreated не опубликовано в подписке на функцию Azure.
Я пытаюсь разработать функцию Azure для работы с большим двоичным объектом, созданным функцией захвата в концентраторе событий. Однако, хотя капли захвата правильно хранятся на контейнере, кажется, что нет Microsoft.EventHub.CaptureFileCreated
событие публикуется в подписке на функцию. Подписка на событие для конечной точки функции была создана без ошибок, и выходные данные из интерфейса командной строки Azure
{
"additionalProperties": {},
"deadLetterDestination": null,
"destination": {
"additionalProperties": {},
"endpointBaseUrl": "https://xxxxx-xxxxx-xxxxx.azurewebsites.net/api/EventGridWebhook",
"endpointType": "WebHook",
"endpointUrl": null
},
"eventDeliverySchema": "InputEventSchema",
"filter": {
"additionalProperties": {},
"includedEventTypes": [
"Microsoft.EventHub.CaptureFileCreated"
],
"isSubjectCaseSensitive": null,
"subjectBeginsWith": "",
"subjectEndsWith": ""
},
"id": "/subscriptions/yyyyy-yyyyy-yyyyyy/resourceGroups/test-event-grid-grp/providers/Microsoft.EventHub/namespaces/capture-hub-namespace/providers/Microsoft.EventGrid/eventSubscriptions/captureFunctionV1Sub",
"labels": null,
"name": "captureFunctionV1Sub",
"provisioningState": "Succeeded",
"resourceGroup": "test-event-grid-grp",
"retryPolicy": {
"additionalProperties": {},
"eventTimeToLiveInMinutes": 1440,
"maxDeliveryAttempts": 30
},
"topic": "/subscriptions/yyyyy-yyyyy-yyyyyy/resourceGroups/test-event-grid-grp/providers/microsoft.eventhub/namespaces/capture-hub-namespace",
"type": "Microsoft.EventGrid/eventSubscriptions"
}
Тело функции представляет собой стандартный триггер Http с дополнительной частью проверки, необходимой для подписки конечной точки таблицы событий.
public static async Task<object> Run(HttpRequestMessage req, TraceWriter log)
{
string jsonContent = await req.Content.ReadAsStringAsync();
log.Info($"Webhook was triggered! Input: {jsonContent}");
dynamic events = JsonConvert.DeserializeObject(jsonContent);
if (req.Headers.GetValues("Aeg-Event-Type").FirstOrDefault() == "SubscriptionValidation")
{
var code = events[0].Data["validationCode"];
return req.CreateResponse(HttpStatusCode.OK,
new { validationResponse = code });
}
return req.CreateResponse(HttpStatusCode.OK);
}
В качестве эксперимента, если я добавлю конечную точку той же функции для другого типа события (например, событие создания блоба), я смогу увидеть вызовы функций в журналах. Кроме того, в метрике подписки на событие кажется, что ни одно событие никогда не публикуется для подписчиков.
Кроме того, добавление подписки на событие захвата в приложение логики или в очередь хранения привело к тому, что было опубликовано ноль событий, как в случае триггера веб-крюка. Стоит также отметить, что это не работает при использовании как среды выполнения для функций Azure (v1 и v2), так и даже при использовании определенных EventGridTrigger
атрибут вместо общего триггера Http; однако другие типы событий правильно публикуют события и запускают функцию.
Для справки о возможных шагах воспроизведения я воспользовался этим руководством Microsoft, пропустив часть SQL Server/ Хранилище данных. При поиске других людей, имеющих аналогичную проблему, я нашел этот вопрос, который, похоже, связан с моим делом, но нет четкого ответа или понятия о том, в чем может быть проблема. Что-то должно быть не хватает, но я понятия не имею, что попробовать дальше.
1 ответ
Через несколько дней, похоже, это временная проблема с инфраструктурой. Сегодня утром я провел дополнительные тесты, и все заработало.
Более того, я вижу журналы моей функции, которые успешно запускались в последние дни, и я ничего не менял.