你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

将事件从 API 管理发送到事件网格

适用于:消耗 | 开发人员 | 基本 | 标准 | 高级

API 管理与 Azure 事件网格集成,使你可以向其他服务发送事件通知,并触发下游流程。 事件网格是一个完全托管的事件路由服务,使用发布-订阅模型。 事件网格包含对 Azure 服务(如 Azure FunctionsAzure 逻辑应用)的内置支持,还可使用 Webhook 向非 Azure 服务传递事件警报。

例如,使用与事件网格的集成,可以生成一个用于更新数据库、创建计费帐户,并在每次将用户添加到 API 管理实例时发送电子邮件通知的应用程序。

在本文中,你将在 API 管理实例中订阅事件网格事件,触发事件,然后将事件发送到用于处理数据的终结点。 为简单起见,你会将事件发送到一个可收集并显示消息的示例 Web 应用:

事件网格查看器中的 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 门户中,执行以下步骤:

  1. 在左侧菜单中选择“订阅”。

  2. 从订阅列表中选择要用于事件网格的订阅。

  3. 在“订阅”页左侧菜单的“设置”下,选择“资源提供程序”。

  4. 搜索 Microsoft.EventGrid,并确认“状态”为“未注册”。

  5. 在提供程序列表中选择“Microsoft.EventGrid”。

  6. 在命令栏上选择“注册”。

    显示向 Azure 订阅注册 Microsoft.EventGrid 提供程序的图像。

  7. 刷新以确保 Microsoft.EventGrid 的状态更改为“已注册”。

    显示向 Azure 订阅成功注册 Microsoft.EventGrid 提供程序的图像。

订阅 API 管理事件

在事件网格中订阅一个主题,以告知你要跟踪哪些事件,以及要将事件发送到何处。 在此处创建对 API 管理实例中事件的订阅。

  1. Azure 门户,导航到 API 管理实例。

  2. 选择“事件”>“+ 事件订阅”。

  3. 在“基本信息”选项卡上:

    • 输入事件订阅的描述性名称。
    • 在“事件类型”中,选择要发送到事件网格的一种或多种 API 管理事件类型。 对于本文中的示例,请至少选择“Microsoft.APIManagement.ProductCreated”
    • 在“终结点详细信息”中选择“Web Hook”事件类型,单击“选择终结点”,然后输入 Web 应用 URL 再加上 api/updates 。 示例:https://myapp.azurewebsites.net/api/updates
    • 选择“确认所选内容”。
  4. 将其余选项卡上的设置保留默认值,然后选择“创建”。

    在 Azure 门户中创建事件订阅

触发和查看事件

正常运行示例应用并使用事件网格订阅 API 管理实例后,接下来可以生成事件。

例如,在 API 管理实例中创建一个产品。 如果事件订阅包括 Microsoft.APIManagement.ProductCreated 事件,则创建产品会触发一个推送到 Web 应用终结点的事件。

导航到你的事件网格查看器 Web 应用,应会看到 ProductCreated 事件。 选择该事件旁边的按钮以显示详细信息。

事件网格查看器中的“已创建产品”事件

事件网格事件架构

API 管理事件数据包括 resourceUri(用于标识触发了事件的 API 管理资源)。 有关 API 管理事件消息架构的详细信息,请参阅事件网格文档:

API 管理的 Azure 事件网格事件架构

后续步骤