Публикация событий в пользовательских разделах службы "Сетка событий Azure" с помощью ключей доступа

В этой статье объясняется, как опубликовать событие в пользовательском разделе с помощью ключа доступа. В ней также представлен формат записей и данные событий. Соглашение об уровне обслуживания (SLA) применяется только к записям, которые соответствуют ожидаемому формату.

Примечание.

Проверка подлинности Microsoft Entra обеспечивает более высокую поддержку проверки подлинности, чем это предоставляется ключом доступа или проверкой подлинности маркера ПОДПИСАННОГО URL-адреса (SAS). При проверке подлинности Microsoft Entra удостоверение проверяется с помощью поставщика удостоверений Microsoft Entra. Разработчику не придется обрабатывать ключи в коде, если вы используете проверку подлинности Microsoft Entra. Вы также сможете воспользоваться всеми функциями безопасности, встроенными в платформа удостоверений Майкрософт, такими как условный доступ, которые помогут улучшить позицию безопасности приложения. Дополнительные сведения см. в разделе "Проверка подлинности клиентов публикации с помощью идентификатора Microsoft Entra".

Конечная точка

При отправке запроса HTTP POST в пользовательский раздел используйте URI в таком формате: https://<topic-endpoint>?api-version=2018-01-01. Например, допустимый URI — https://exampletopic.westus2-1.eventgrid.azure.net/api/events?api-version=2018-01-01. Чтобы получить конечную точку для пользовательского раздела с помощью Azure CLI, используйте следующую команду:

az eventgrid topic show --name <topic-name> -g <topic-resource-group> --query "endpoint"

Чтобы получить конечную точку для пользовательского раздела с помощью Azure PowerShell, используйте следующую команду:

(Get-AzEventGridTopic -ResourceGroupName <topic-resource-group> -Name <topic-name>).Endpoint

Добавьте в запрос значение заголовка aeg-sas-key, содержащее ключ для аутентификации. Например, допустимое значение заголовка — aeg-sas-key: xxxxxxxxxxxxxxxxxxxxxxx. Чтобы получить ключ для пользовательского раздела с помощью Azure CLI, используйте следующую команду:

az eventgrid topic key list --name <topic-name> -g <topic-resource-group> --query "key1"

Чтобы получить ключ для пользовательского раздела с помощью PowerShell, используйте следующую команду:

(Get-AzEventGridTopicKey -ResourceGroupName <topic-resource-group> -Name <topic-name>).Key1

Данные события

Для пользовательского раздела данные верхнего уровня должны содержать те же поля, что и стандартные определенные события ресурса. Одним из этих свойств является data свойство, содержащее свойства, уникальные для пользовательского раздела. В качестве издателя событий вы определяете свойства этого объекта данных. Ниже приведена схема:

[
  {
    "id": string,    
    "eventType": string,
    "subject": string,
    "eventTime": string-in-date-time-format,
    "data":{
      object-unique-to-each-publisher
    },
    "dataVersion": string
  }
]

Описание этих свойств см. в статье Схема событий службы "Сетка событий Azure". При публикации событий в раздел сетки событий массив может иметь общий размер до 1 МБ. Максимально допустимый размер события также составляет 1 МБ. Плата за события свыше 64 КБ начисляется с приращением в 64 КБ. При получении событий в пакете максимально допустимое количество событий составляет 5 000 на пакет.

Ниже приведен пример допустимой схемы данных события:

[{
  "id": "1807",
  "eventType": "recordInserted",
  "subject": "myapp/vehicles/motorcycles",
  "eventTime": "2017-08-10T21:03:07+00:00",
  "data": {
    "make": "Ducati",
    "model": "Monster"
  },
  "dataVersion": "1.0"
}]

Ответ

После отправки данных в конечную точку раздела вы получите ответ. Ответ — это стандартный код ответа HTTP. Ниже приведены некоторые распространенные ответы:

Результат Ответ
Удачное завершение 200 OK
Неправильный формат данных события 400 Bad Request (Неверный запрос)
Недопустимый ключ доступа 401 Unauthorized (Не авторизовано)
Неправильная конечная точка 404 Не найдено
Массив или событие превышает допустимый размер 413 Полезные данные слишком велики

Текст сообщений об ошибках имеет следующий формат:

{
    "error": {
        "code": "<HTTP status code>",
        "message": "<description>",
        "details": [{
            "code": "<HTTP status code>",
            "message": "<description>"
    }]
  }
}

Следующие шаги