你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
将事件从 API 管理发送到事件网格
适用于:所有 API 管理层级
API 管理与 Azure 事件网格集成,使你可以向其他服务发送事件通知,并触发下游流程。 事件网格是一个完全托管的事件路由服务,使用发布-订阅模型。 事件网格包含对 Azure 服务(如 Azure Functions 和 Azure 逻辑应用)的内置支持,还可使用 Webhook 向非 Azure 服务传递事件警报。
例如,使用与事件网格的集成,可以生成一个用于更新数据库、创建计费帐户,并在每次将用户添加到 API 管理实例时发送电子邮件通知的应用程序。
在本文中,你将在 API 管理实例中订阅事件网格事件,触发事件,然后将事件发送到用于处理数据的终结点。 为简单起见,你会将事件发送到一个可收集并显示消息的示例 Web 应用:
先决条件
在 Azure Cloud Shell 中使用 Bash 环境。 有关详细信息,请参阅 Azure Cloud Shell 中的 Bash 快速入门。
如需在本地运行 CLI 参考命令,请安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI。
如果使用的是本地安装,请使用 az login 命令登录到 Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅使用 Azure CLI 登录。
出现提示时,请在首次使用时安装 Azure CLI 扩展。 有关扩展详细信息,请参阅使用 Azure CLI 的扩展。
运行 az version 以查找安装的版本和依赖库。 若要升级到最新版本,请运行 az upgrade。
- 如果你还没有 API 管理服务,请完成以下快速入门:创建 Azure API 管理实例
- 在 API 管理实例中启用系统分配的托管标识。
- 如果没有用于部署示例终结点的资源组,请创建一个。
创建事件终结点
在本部分,你将使用资源管理器模板将一个预生成的示例 Web 应用程序部署到 Azure 应用服务。 稍后,你将订阅 API 管理实例的事件网格事件,并将此应用指定为事件要发送到的终结点。
若要部署示例应用,可以使用 Azure CLI、Azure PowerShell 或 Azure 门户。 以下示例在 Azure CLI 中使用 az deployment group create 命令。
将
RESOURCE_GROUP_NAME
设置为现有资源组的名称将
SITE_NAME
设置为你的 Web 应用的唯一名称站点名称在 Azure 中必须唯一,因为它是 Web 应用的完全限定域名 (FQDN) 的一部分。 在稍后的部分,你将在 Web 浏览器中导航到该应用的 FQDN 以查看事件。
RESOURCE_GROUP_NAME=<your-resource-group-name>
SITE_NAME=<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=$SITE_NAME hostingPlanName=$SITE_NAME-plan
部署成功后(可能需要几分钟时间),打开浏览器并导航到 Web 应用,以确保它正在运行:
https://<your-site-name>.azurewebsites.net
此时你应会看到示例应用,但其中未显示事件消息。
注册事件网格资源提供程序
除非你以前用过事件网格,否则你需要注册事件网格资源提供程序。 如果你以前用过事件网格,请转到下一部分。
在 Azure 门户中,执行以下步骤:
在左侧菜单中选择“订阅”。
从订阅列表中选择要用于事件网格的订阅。
在“订阅”页左侧菜单的“设置”下,选择“资源提供程序”。
搜索 Microsoft.EventGrid,并确认“状态”为“未注册”。
在提供程序列表中选择“Microsoft.EventGrid”。
在命令栏上选择“注册”。
刷新以确保 Microsoft.EventGrid 的状态更改为“已注册”。
订阅 API 管理事件
在事件网格中订阅一个主题,以告知你要跟踪哪些事件,以及要将事件发送到何处。 在此处创建对 API 管理实例中事件的订阅。
在 Azure 门户,导航到 API 管理实例。
选择“事件”>“+ 事件订阅”。
在“基本信息”选项卡上:
- 输入事件订阅的描述性名称。
- 在“事件类型”中,选择要发送到事件网格的一种或多种 API 管理事件类型。 对于本文中的示例,请至少选择“Microsoft.APIManagement.ProductCreated”
- 在“终结点详细信息”中选择“Web Hook”事件类型,单击“选择终结点”,然后输入 Web 应用 URL 再加上
api/updates
。 示例:https://myapp.azurewebsites.net/api/updates
。 - 选择“确认所选内容”。
将其余选项卡上的设置保留默认值,然后选择“创建”。
触发和查看事件
正常运行示例应用并使用事件网格订阅 API 管理实例后,接下来可以生成事件。
例如,在 API 管理实例中创建一个产品。 如果事件订阅包括 Microsoft.APIManagement.ProductCreated 事件,则创建产品会触发一个推送到 Web 应用终结点的事件。
导航到你的事件网格查看器 Web 应用,应会看到 ProductCreated
事件。 选择该事件旁边的按钮以显示详细信息。
事件网格事件架构
API 管理事件数据包括 resourceUri
(用于标识触发了事件的 API 管理资源)。 有关 API 管理事件消息架构的详细信息,请参阅事件网格文档:
后续步骤
- 详细了解如何订阅事件。