适用于:消耗|开发人员|基本|标准|高级
通过 API 管理与 Azure 事件网格的集成,你可以向其他服务发送事件通知,并触发下游流程。 事件网格是一个完全托管的事件路由服务,使用发布-订阅模型。 事件网格包含对 Azure 服务(如 Azure Functions 和 Azure 逻辑应用)的内置支持,还可使用 Webhook 向非 Azure 服务传递事件警报。
可以订阅以下类型的 API 管理事件:
- 控制平面事件:创建、更新或删除某些 API 管理资源时会生成这些事件。 例如,可以在 API 管理实例中创建新用户或新产品时收到事件。
- 数据平面事件 (预览):这些事件是在 API 管理网关作期间生成的。 目前,API 管理可以为 后端断路器 和自承载网关 访问令牌的生命周期生成事件。
有关可用事件的完整列表,请参阅 API 管理的事件网格架构。
例如,使用与事件网格的集成,可以生成一个用于更新数据库、创建计费帐户,并在每次将用户添加到 API 管理实例时发送电子邮件通知的应用程序。
在本文中,你将在 API 管理实例中订阅事件网格事件,触发事件,然后将事件发送到用于处理数据的终结点。 为简单起见,你会将事件发送到收集并显示消息的示例 Web 应用:
先决条件
在 Azure Cloud Shell 中使用 Bash 环境。 有关详细信息,请参阅 Azure Cloud Shell 入门。
如果要在本地运行 CLI 引用命令,请安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI。
如果使用的是本地安装,请使用 az login 命令登录到 Azure CLI。 要完成身份验证过程,请执行终端中显示的步骤。 有关其他登录选项,请参阅 使用 Azure CLI 向 Azure 进行身份验证。
按照提示,请在首次使用时安装 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 管理事件消息架构的详细信息,请参阅事件网格文档:
相关内容
- 详细了解如何订阅事件。