Краткое руководство. Маршрутизация событий хранилища BLOB-объектов в веб-конечную точку с помощью шаблона ARM
В этой статье описано, как с помощью шаблона Resource Manager (ARM) создать учетную запись хранения BLOB-объектов и подписку на связанные события этого хранилища больших двоичных объектов, а также активировать событие для просмотра результата. Как правило, события отправляются на конечную точку, которая обрабатывает данные событий и выполняет соответствующие действия. Но в этой статье для простоты события отправляются в веб-приложение, которое собирает и отображает сообщения.
Примечание.
Если вы не знакомы с Сетка событий Azure, ознакомьтесь с разделом "Что Сетка событий Azure, чтобы получить обзор службы перед выполнением этого руководства".
Шаблон Azure Resource Manager — это файл нотации объектов JavaScript (JSON), который определяет инфраструктуру и конфигурацию проекта. В шаблоне используется декларативный синтаксис. Вы описываете предполагаемое развертывание без написания последовательности команд программирования для создания развертывания.
Если среда соответствует предварительным требованиям и вы знакомы с использованием шаблонов ARM, нажмите кнопку Развертывание в Azure. Шаблон откроется на портале Azure.
Необходимые компоненты
Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе.
Создание конечной точки сообщения
Перед созданием подписки на события хранилища BLOB-объектов необходимо создать конечную точку для сообщения о событии. Обычно конечная точка выполняет действия на основе данных событий. Чтобы упростить это краткое руководство, вы развернете предварительно созданное веб-приложение , отображающее сообщения о событиях. Развернутое решение содержит план службы приложений, веб-приложение службы приложений и исходный код из GitHub.
Выберите Развернуть в Azure, чтобы развернуть решение в своей подписке. На портале Azure укажите значения остальных параметров.
Развертывание может занять несколько минут. После успешного развертывания просмотрите веб-приложение, чтобы убедиться, что оно запущено. Откройте браузер и перейдите по адресу
https://<your-site-name>.azurewebsites.net
.Вы видите сайт, но события еще не размещены на нем.
Изучение шаблона
Шаблон, используемый в этом кратком руководстве, взят из шаблонов быстрого запуска Azure.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.26.54.24096",
"templateHash": "17805408638569592847"
}
},
"parameters": {
"storageAccountName": {
"type": "string",
"defaultValue": "[format('storage{0}', uniqueString(resourceGroup().id))]",
"metadata": {
"description": "Provide a unique name for the Blob Storage account."
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Provide a location for the Blob Storage account that supports Event Grid."
}
},
"eventSubName": {
"type": "string",
"defaultValue": "subToStorage",
"metadata": {
"description": "Provide a name for the Event Grid subscription."
}
},
"endpoint": {
"type": "string",
"metadata": {
"description": "Provide the URL for the WebHook to receive events. Create your own endpoint for events."
}
},
"systemTopicName": {
"type": "string",
"defaultValue": "mystoragesystemtopic",
"metadata": {
"description": "Provide a name for the system topic."
}
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2023-01-01",
"name": "[parameters('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2",
"properties": {
"accessTier": "Hot",
"minimumTlsVersion": "TLS1_2",
"supportsHttpsTrafficOnly": true,
"allowBlobPublicAccess": false
}
},
{
"type": "Microsoft.EventGrid/systemTopics",
"apiVersion": "2023-12-15-preview",
"name": "[parameters('systemTopicName')]",
"location": "[parameters('location')]",
"identity": {
"type": "SystemAssigned"
},
"properties": {
"source": "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]",
"topicType": "Microsoft.Storage.StorageAccounts"
},
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]"
]
},
{
"type": "Microsoft.EventGrid/systemTopics/eventSubscriptions",
"apiVersion": "2023-12-15-preview",
"name": "[format('{0}/{1}', parameters('systemTopicName'), parameters('eventSubName'))]",
"properties": {
"destination": {
"properties": {
"endpointUrl": "[parameters('endpoint')]"
},
"endpointType": "WebHook"
},
"filter": {
"includedEventTypes": [
"Microsoft.Storage.BlobCreated",
"Microsoft.Storage.BlobDeleted"
]
}
},
"dependsOn": [
"[resourceId('Microsoft.EventGrid/systemTopics', parameters('systemTopicName'))]"
]
}
],
"outputs": {
"name": {
"type": "string",
"value": "[parameters('eventSubName')]"
},
"resourceId": {
"type": "string",
"value": "[resourceId('Microsoft.EventGrid/systemTopics/eventSubscriptions', parameters('systemTopicName'), parameters('eventSubName'))]"
},
"resourceGroupName": {
"type": "string",
"value": "[resourceGroup().name]"
},
"location": {
"type": "string",
"value": "[parameters('location')]"
}
}
}
В шаблоне определено два ресурса Azure:
- Microsoft.Storage/storageAccounts создает учетную запись хранения.
- Microsoft.EventGrid/systemTopics создает системный раздел с указанным именем для учетной записи хранения.
- Microsoft.EventGrid/systemTopics/eventSubscriptions создает подписку на Сетку событий Azure для системного раздела.
Развертывание шаблона
Выберите следующую ссылку, чтобы войти на портал Azure и открыть шаблон. Шаблон создает хранилище ключей и секрет.
Укажите конечную точку: предоставьте URL-адрес веб-приложения и добавьте
api/updates
к URL-адресу домашней страницы.Щелкните Приобрести, чтобы развернуть шаблон.
Для развертывания шаблона здесь используется портал Azure. Вы можете также использовать Azure PowerShell, Azure CLI и REST API. Дополнительные сведения о других методах развертывания см. в статье о развертывании с использованием шаблонов.
Примечание.
Дополнительные примеры шаблонов службы "Сетка событий Azure" можно найти здесь.
Проверка развертывания
Теперь снова откройте веб-приложение и убедитесь, что оно успешно получило отправленное событие подтверждения подписки. Щелкните значок с изображением глаза, чтобы развернуть данные события. Сетка событий отправляет событие подтверждения, чтобы конечная точка могла подтвердить, что она готова получать данные события. Веб-приложение содержит код для проверки подписки.
Теперь необходимо активировать событие, чтобы увидеть, как Сетка событий Azure распределяет сообщение к вашей конечной точке.
Событие для хранилища BLOB-объектов активируется при отправке файла. Определенное содержимое для файла не требуется. В статье предполагается, что у вас есть файл с именем testfile.txt, но вы можете использовать любой файл.
При передаче файла в хранилище BLOB-объектов Azure, служба "Сетка событий" отправляет сообщение в конечную точку, настроенную при подписке. Сообщение имеет формат JSON и содержит массив с одним или несколькими событиями. В следующем примере сообщение JSON содержит массив с одним событием. Просмотрите веб-приложение. Вы увидите полученное событие создания большого двоичного объекта.
Очистка ресурсов
Удалите группу ресурсов, если она больше не нужна.
Следующие шаги
Дополнительные сведения о шаблонах Azure Resource Manager см. в перечисленных ниже статьях.