你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用事件网格进行应用程序配置数据更改通知
本文介绍如何设置 Azure 应用程序配置事件订阅,以将键值修改事件发送到 Web 终结点。 Azure 应用程序配置用户可以订阅每当键值发生修改时发出的事件。 这些事件可以触发 Webhook、Azure Functions、Azure 存储队列,或 Azure 事件网格支持的任何其他事件处理程序。 通常,你会将事件发送到处理事件数据并执行操作的终结点。 但是,为了简化本文,你将事件发送到收集并显示消息的 Web 应用。
先决条件
- Azure 订阅 - 免费创建订阅。 可以选择使用 Azure Cloud Shell。
Azure Cloud Shell
Azure 托管 Azure Cloud Shell(一个可通过浏览器使用的交互式 shell 环境)。 可以将 Bash 或 PowerShell 与 Cloud Shell 配合使用来使用 Azure 服务。 可以使用 Cloud Shell 预安装的命令来运行本文中的代码,而不必在本地环境中安装任何内容。
若要启动 Azure Cloud Shell,请执行以下操作:
选项 | 示例/链接 |
---|---|
选择代码或命令块右上角的“试用”。 选择“试用”不会自动将代码或命令复制到 Cloud Shell。 | |
转到 https://shell.azure.com 或选择“启动 Cloud Shell”按钮可在浏览器中打开 Cloud Shell。 | |
选择 Azure 门户右上角菜单栏上的 Cloud Shell 按钮。 |
若要使用 Azure Cloud Shell,请执行以下操作:
启动 Cloud Shell。
选择代码块(或命令块)上的“复制”按钮以复制代码或命令。
在 Windows 和 Linux 上选择 Ctrl+Shift+V,或在 macOS 上选择 Cmd+Shift+V 将代码或命令粘贴到 Cloud Shell 会话中。
选择“Enter”运行代码或命令。
如果选择在本地安装并使用 CLI,本文需要运行最新版的 Azure CLI(2.0.70 或更高版本)。 要查找版本,请运行 az --version
。 如果需要进行安装或升级,请参阅安装 Azure CLI。
如果不使用 Cloud Shell,则必须先使用 az login
登录。
创建资源组
事件网格主题是 Azure 资源,必须放置在 Azure 资源组中。 该资源组是在其中部署和管理 Azure 资源的逻辑集合。
使用“az group create”命令创建资源组。
以下示例在 westus 位置创建名为 <resource_group_name>
的资源组。 将 <resource_group_name>
替换为资源组的唯一名称。
az group create --name <resource_group_name> --location westus
创建应用配置存储区
将 <appconfig_name>
替换为配置存储的唯一名称,将 <resource_group_name>
替换为前面创建的资源组。 该名称必须唯一,因为它将用作 DNS 名称。
az appconfig create \
--name <appconfig_name> \
--location westus \
--resource-group <resource_group_name> \
--sku free
创建消息终结点
在订阅主题之前,让我们创建事件消息的终结点。 通常情况下,终结点基于事件数据执行操作。 为了简化此快速入门,将部署用于显示事件消息的预建的 Web 应用。 所部署的解决方案包括应用服务计划、应用服务 Web 应用和 GitHub 中的源代码。
将 <your-site-name>
替换为 Web 应用的唯一名称。 Web 应用名称必须唯一,因为它是 DNS 条目的一部分。
$sitename=<your-site-name>
az deployment group create \
--resource-group <resource_group_name> \
--template-uri "https://raw.githubusercontent.com/Azure-Samples/azure-event-grid-viewer/master/azuredeploy.json" \
--parameters siteName=$sitename hostingPlanName=viewerhost
部署可能需要几分钟才能完成。 部署成功后,请查看 Web 应用以确保它正在运行。 在 Web 浏览器中导航到 https://<your-site-name>.azurewebsites.net
应会看到站点上当前未显示任何消息。
启用事件网格资源提供程序
如果以前未在 Azure 订阅中使用过事件网格,则可能需要注册事件网格资源提供程序。 运行以下命令,注册提供程序:
az provider register --namespace Microsoft.EventGrid
完成注册可能需要一些时间。 若要查看状态,请运行以下命令:
az provider show --namespace Microsoft.EventGrid --query "registrationState"
当
registrationState
为Registered
后,即可继续。
订阅应用程序配置存储
订阅主题,以告知事件网格要跟踪哪些事件以及要将这些事件发送到哪个位置。 以下示例订阅所创建的应用程序配置,并将 Web 应用中的 URL 作为事件通知的终结点传递。 将 <event_subscription_name>
替换为事件订阅的名称。 对于 <resource_group_name>
和 <appconfig_name>
,请使用此前创建的值。
Web 应用的终结点必须包括后缀 /api/updates/
。
appconfigId=$(az appconfig show --name <appconfig_name> --resource-group <resource_group_name> --query id --output tsv)
endpoint=https://$sitename.azurewebsites.net/api/updates
az eventgrid event-subscription create \
--source-resource-id $appconfigId \
--name <event_subscription_name> \
--endpoint $endpoint
再次查看 Web 应用,并注意现已向该应用发送了订阅验证事件。 选择眼睛图标以展开事件数据。 事件网格发送验证事件,以便终结点可以验证它是否想要接收事件数据。 Web 应用包含用于验证订阅的代码。
触发应用程序配置事件
现在,让我们触发一个事件,看事件网格如何将消息分发到终结点。 使用前面指定的 <appconfig_name>
创建键-值。
az appconfig kv set --name <appconfig_name> --key Foo --value Bar --yes
现已触发事件,并且事件网格已将消息发送到订阅时配置的终结点。 查看 Web 应用以查看刚刚发送的事件。
[{
"id": "00000000-0000-0000-0000-000000000000",
"topic": "/subscriptions/{subscription-id}/resourceGroups/eventDemoGroup/providers/microsoft.appconfiguration/configurationstores/{appconfig-name}",
"subject": "https://{appconfig-name}.azconfig.io/kv/Foo",
"data": {
"key": "Foo",
"etag": "a1LIDdNEIV6wCnfv3xaip7fMXD3",
"syncToken":"zAJw6V16=Njo1IzMzMjE3MzA=;sn=3321730"
},
"eventType": "Microsoft.AppConfiguration.KeyValueModified",
"eventTime": "2019-05-31T18:59:54Z",
"dataVersion": "1",
"metadataVersion": "1"
}]
清理资源
如果你打算继续使用此应用程序配置和事件订阅,请不要清理在本文中创建的资源。 如果不打算继续学习,请使用以下命令删除本文中创建的资源。
将 <resource_group_name>
替换为上面创建的资源组。
az group delete --name <resource_group_name>
后续步骤
了解如何创建主题和事件订阅后,请详细了解键-值事件以及事件网格的功能: