Событие сетки «Microsoft.EventHub.CaptureFileCreated» не опубликовано в подписке на функцию Azure - PullRequest
0 голосов
/ 04 июля 2018

Я пытаюсь разработать функцию Azure для работы с большим двоичным объектом, созданным функцией захвата концентратора событий. Однако, хотя капли захвата правильно хранятся в контейнере, похоже, что в подписке Function не публикуется событие 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);
}

В качестве эксперимента, если я добавлю конечную точку той же функции для другого типа события (например, событие создания BLOB-объекта), я смогу увидеть вызовы функций в журналах. Кроме того, в метрике подписки на событие кажется, что подписчики не публикуют ни одного события

Empty subscription publish metrics

Кроме того, добавление подписки из события захвата в приложение логики или в очередь хранения привело к публикации нулевых событий, как в случае триггера webhook. Стоит также отметить, что это не работает при использовании обеих сред выполнения для функций Azure (v1 и v2) и даже при использовании определенного атрибута EventGridTrigger вместо общего триггера Http; однако другие типы событий правильно публикуют события и вызывают функцию.

Для справки о возможных шагах воспроизведения, я извлек вдохновение из этого руководства Microsoft , пропуская часть SQL Server / Хранилище данных. При поиске других людей, имеющих подобную проблему, я обнаружил этот вопрос , который, похоже, связан с моим делом, но нет четкого ответа или подсказки о том, в чем может быть проблема. Что-то должно быть не хватает, но я понятия не имею, что попробовать дальше.

1 Ответ

0 голосов
/ 09 июля 2018

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

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

...