Публикация событий в пользовательских разделах службы "Сетка событий 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, используйте следующую команду:

Конечную точку раздела можно найти на вкладке "Обзор" страницы "Раздел сетки событий" в портал Azure.

Снимок экрана: страница раздела

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

Чтобы получить ключ доступа для настраиваемого раздела, выберите вкладку "Ключи доступа" на странице "Раздел сетки событий" в портал Azure.

Снимок экрана: вкладка

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

Для пользовательского раздела данные верхнего уровня должны содержать те же поля, что и стандартные определенные события ресурса. Одним из этих свойств является 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 КБ. Когда клиент получает события в пакете, максимально допустимое количество событий составляет 5000 на пакет.

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

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

Отправка примера события

В этом разделе показано, как отправить пример события в пользовательский раздел.

  1. В портал Azure запустите Cloud Shell.

  2. В Cloud Shell выполните команды из Azure PowerShell или Azure CLI в сеансе Bash или PowerShell .

    Снимок экрана: Cloud Shell в портал Azure.

Response

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

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

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

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