Публикация событий в пользовательских разделах службы "Сетка событий 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, используйте следующую команду:
Добавьте в запрос значение заголовка aeg-sas-key, содержащее ключ для аутентификации. Например, допустимое значение заголовка — aeg-sas-key: xxxxxxxxxxxxxxxxxxxxxxx. Чтобы получить ключ для пользовательского раздела с помощью Azure CLI, используйте следующую команду:
Для пользовательского раздела данные верхнего уровня должны содержать те же поля, что и стандартные определенные события ресурса. Одним из этих свойств является data свойство, содержащее свойства, уникальные для пользовательского раздела. В качестве издателя событий вы определяете свойства этого объекта данных. Ниже приведена схема:
Описание этих свойств см. в статье Схема событий службы "Сетка событий Azure". Когда клиент отправляет события в раздел сетки событий, массив может иметь общий размер до 1 МБ. Максимально допустимый размер события также составляет 1 МБ. Плата за события свыше 64 КБ начисляется с приращением в 64 КБ. Когда клиент получает события в пакете, максимально допустимое количество событий составляет 5000 на пакет.
Ниже приведен пример допустимой схемы данных события:
В Cloud Shell выполните команды из Azure PowerShell или Azure CLI в сеансе Bash или PowerShell .
Azure CLI
endpoint=$(az eventgrid topic show --name<topic name>-g<resource group name>--query"endpoint"--output tsv)
key=$(az eventgrid topic key list --name<topic name>-g<resource group name>--query"key1"--output tsv)
event='[ {"id": "'"$RANDOM"'", "eventType": "recordInserted", "subject": "myapp/vehicles/motorcycles", "eventTime": "'`date +%Y-%m-%dT%H:%M:%S%z`'", "data":{ "make": "Ducati", "model": "Monster"},"dataVersion": "1.0"} ]'
curl -X POST -H"aeg-sas-key: $key"-d"$event"$endpoint
Azure PowerShell
$resourceGroupName = "<resource group name>"$topicName = "<topic name>"$endpoint = (Get-AzEventGridTopic -ResourceGroupName$resourceGroupName -Name$topicName).Endpoint
$keys = Get-AzEventGridTopicKey -ResourceGroupName$resourceGroupName -Name$topicName$eventID = Get-Random99999#Date format should be SortableDateTimePattern (ISO 8601)$eventDate = Get-Date -Format s
#Construct body using Hashtable$htbody = @{
id= $eventID
eventType="recordInserted"
subject="myapp/vehicles/motorcycles"
eventTime= $eventDatedata= @{
make="Ducati"
model="Monster"
}
dataVersion="1.0"
}
#Use ConvertTo-Json to convert event body from Hashtable to JSON Object#Append square brackets to the converted JSON payload since they are expected in the event's JSON payload syntax$body = "["+(ConvertTo-Json$htbody)+"]"Invoke-WebRequest -Uri$endpoint -Method POST -Body$body -Headers @{"aeg-sas-key" = $keys.Key1}
Response
После отправки данных в конечную точку раздела вы получите ответ. Ответ — это стандартный код ответа HTTP. Ниже приведены некоторые распространенные ответы:
Результат
Response
Удачное завершение
200 OK
Неправильный формат данных события
400 — недопустимый запрос
Недопустимый ключ доступа
401 — не авторизовано
Неправильная конечная точка
404 Не найдено
Массив или событие превышает допустимый размер
413 Полезные данные слишком велики
Текст сообщений об ошибках имеет следующий формат:
JSON
{
"error": {
"code": "<HTTP status code>",
"message": "<description>",
"details": [{
"code": "<HTTP status code>",
"message": "<description>"
}]
}
}
Присоединитесь к серии встреч для создания масштабируемых решений искусственного интеллекта на основе реальных вариантов использования с другими разработчиками и экспертами.
Создавайте эффективные запросы, создавайте политики индексирования, управляйте и подготавливайте ресурсы в API SQL и пакете SDK с помощью Microsoft Azure Cosmos DB.