Сетка событий Событие 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 ответ

Через несколько дней, похоже, это временная проблема с инфраструктурой. Сегодня утром я провел дополнительные тесты, и все заработало.

Более того, я вижу журналы моей функции, которые успешно запускались в последние дни, и я ничего не менял.

Другие вопросы по тегам