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

教程:通过 Azure 事件网格和 Azure 逻辑应用监视虚拟机更改

适用于:Azure 逻辑应用(消耗)

若要监视和响应 Azure 资源或外部资源中发生的特定事件,可以使用 Azure 事件网格和 Azure 逻辑应用。 可使用 Azure 逻辑应用以最少的代码创建自动化的消耗型逻辑应用工作流。 可让这些资源将事件发布到 Azure 事件网格。 反过来,Azure 事件网格将这些事件推送给以队列、网络挂钩或事件中心作为终结点的订阅者。 作为订阅者,你的工作流会在运行事件处理步骤之前,等待这些事件到达 Azure 事件网格。

下面是发布者可以将通过 Azure 事件网格发送给订阅者的某些事件:

  • 创建、读取、更新或删除资源。 例如,你可以监视可能在 Azure 订阅中产生费用并影响你账单的更改。
  • 从 Azure 订阅添加或删除某个人。
  • 你的应用可执行特定的操作。
  • 队列中显示新消息。

在本教程中,将创建在多租户 Azure 逻辑应用中运行的消耗逻辑应用资源。 应用基于消耗定价模型。 你将使用此逻辑应用资源创建一个工作流,用于监视对虚拟机的更改,并发送有关这些更改的电子邮件。 当你创建具有 Azure 资源事件订阅的工作流时,事件会通过 Azure 事件网格从该资源流向工作流。

屏幕截图显示了工作流设计器中使用 Azure 事件网格来监视虚拟机的工作流。

In this tutorial, you learn how to:

  • 创建逻辑应用资源以及通过 Azure 事件网格监视事件的工作流。
  • 添加一个专门检查虚拟机更改的条件。
  • 虚拟机更改时发送电子邮件。

Prerequisites

  • Azure 帐户和订阅。 如果没有订阅,可以注册免费的 Azure 帐户

  • 一个电子邮件帐户,来自配合使用 Azure 逻辑应用来发送通知的电子邮件服务,例如 Office 365 Outlook、Outlook.com 或 Gmail。 对于其他提供程序,请参阅连接器列表

    本教程将使用 Office 365 Outlook 帐户。 如果使用其他电子邮件帐户,UI 可能会略有不同。

    重要说明

    如果要使用 Gmail 连接器,则只有 G-Suite 商业帐户可以在逻辑应用中不受限制地使用此连接器。 如果有 Gmail 用户帐户,则只能将此连接器与 Google 批准的特定服务一起使用,也可以创建用于通过 Gmail 连接器进行身份验证的 Google 客户端应用。 有关详细信息,请参阅 Azure 逻辑应用中 Google 连接器的数据安全和隐私策略

  • 一个在其自己的 Azure 资源组中独一无二的虚拟机。 如果需要虚拟机,请参阅在 Azure 门户中创建 Windows 虚拟机。 若要使虚拟机发布事件,你无需执行任何其他操作。

  • 如果防火墙将流量限制为特定 IP 地址,要设置防火墙以允许 Azure 逻辑应用的访问通过防火墙进行通信。 需要在创建逻辑应用的 Azure 区域中允许 Azure 逻辑应用使用的入站出站 IP 地址访问。

    本示例使用的托管连接器要求防火墙允许访问 Azure 区域中逻辑应用资源的所有托管连接器出站 IP 地址

创建逻辑应用资源

  1. 使用 Azure 帐户登录到 Azure 门户

  2. 在 Azure 主页中,选择“创建资源”>“集成”>“逻辑应用”。

    屏幕截图显示了 Azure 门户,其中包含用于创建逻辑应用资源的选项。

  3. 选择“消耗”>“多租户”。

  4. 在“创建逻辑应用”下,提供有关逻辑应用资源的信息

    屏幕截图显示逻辑应用创建菜单,其中显示了名称、订阅、资源组和位置等详细信息。

    参数 必选 说明
    订阅 < Azure-subscription-name> 在本教程中,选择同一 Azure 订阅用于所有服务。
    资源组 < Azure-resource-group> 逻辑应用的 Azure 资源组名称,可以在本教程中选择用于所有服务。
    逻辑应用名称 < logic-app-name> 提供逻辑应用的唯一名称。
    区域 < Azure-region> 在本教程中,选择同一区域用于所有服务。

    注意

    本教程仅适用于遵循不同用户体验的消耗型逻辑应用。 有关详细信息,请参阅标准型单租户逻辑应用与消耗型多租户逻辑应用之间的差异

  5. 完成操作后,选择“查看 + 创建”。 在下一页上,确认提供的信息,然后选择“创建”。

添加 Azure 事件网格触发器

若要添加 Azure 事件网格触发器,以便可以监视虚拟机的资源组,请执行以下步骤:

  1. 在 Azure 门户中,打开你的消耗逻辑应用资源。

  2. 在资源边栏的“开发工具”下,选择设计器以打开工作流。

  3. 在设计器中,按照这些常规步骤将名为“发生资源事件时”的 Azure 事件网格触发器添加到工作流。

  4. 在“创建连接”窗格中,提供以下信息:

    参数 必选 说明
    身份验证 选择要连接所需的身份验证类型。 所作选择决定了此连接所需的其他参数值。

    例如,进行 OAuth 身份验证时,会显示“租户 ID”列表,并显示 Azure 订阅的 Microsoft Entra 租户。 确认显示的租户正确:

    屏幕截图显示了工作流设计器,其中显示了 Azure 事件网格的登录提示。

    注意

    如果使用个人 Microsoft 帐户登录,如 @outlook.com 或 @hotmail.com,Azure 事件网格触发器可能不会正确显示。 一个临时解决方法是,选择“使用服务主体进行连接”,或是作为 Azure 订阅的一个 Microsoft Entra 的成员进行身份验证。 例如 user-name@emailoutlook.onmicrosoft.com。

  5. 完成后,选择“登录”

  6. 现在,使用来自发布服务器的事件的订阅设置工作流。

    在触发器窗格中,提供有关事件订阅的以下信息:

    屏幕截图显示打开了触发器详细信息编辑器的工作流设计器。

    参数 必选 说明
    资源类型 < event-publisher-Azure-resource-type> 选择事件发布者的 Azure 资源类型。 有关详细信息,请参阅 Azure 资源提供程序和类型。 在本教程中,请选择 Microsoft.Resources.ResourceGroups 以监视 Azure 资源组。
    订阅 < event-publisher-Azure-subscription-name> 选择事件发布者的 Azure 订阅的名称。 对于本教程,请选择用于虚拟机的 Azure 订阅名称。
    资源名称 < event-publisher-Azure-resource-name> 选择事件发布者的 Azure 资源名称。 此列表依据所选择的资源类型而异。 对于本教程,请选择虚拟机所在的 Azure 资源组的名称。
    事件类型项 < 事件类型> 选择一个或多个特定事件类型以筛选并发送到 Azure 事件网格。 例如,可选择添加这些事件类型以检测何时更改或删除了资源:

    - Microsoft.Resources.ResourceActionSuccess
    - Microsoft.Resources.资源删除成功
    - Microsoft.Resources.ResourceWriteSuccess

    有关详细信息,请参阅:

    - Azure 资源组作为事件网格源
    - 了解事件筛选
    - 筛选事件网格的事件
    若要添加可选参数,请打开“高级参数”列表,然后选择所需的参数。 {参阅说明} - 前缀筛选器:在本教程中将此值留空。 默认行为与所有值匹配。 但是,你可以指定一个前缀字符串作为筛选器,例如,特定资源的路径和参数。

    - 后缀筛选器:在本教程中将此值留空。 默认行为与所有值匹配。 但是,当你仅需要特定文件类型,可以指定一个后缀字符串作为筛选器,例如,文件扩展名。

    - 订阅名称:在本教程中,可提供事件订阅的唯一名称
  7. 保存工作流。 在设计器工具栏上,选择“保存”

    使用 Azure 事件网格触发器保存工作流时,Azure 会将工作流的事件订阅创建到所选资源。 当资源将事件发布到 Azure 事件网格服务时,该服务会将事件推送到工作流。 此事件触发并运行下一部分中定义的工作流。

保存工作流时,逻辑应用资源将实时显示在 Azure 门户中,并开始从 Azure 事件网格侦听事件。 但是,在添加执行任务的操作之前,工作流不会执行任何其他作。

添加条件

若要仅在特定事件或操作发生时在工作流中运行操作,请添加检查该事件或操作的条件。 本教程检查 Microsoft.Compute/virtualMachines/write 操作。 如果此条件为 true,工作流中的另一个操作会向你发送一封电子邮件,其中包含有关更新的虚拟机的信息。

  1. 在设计器中,按照这些常规步骤将名为 Condition 的内置操作添加到工作流。

    设计器将空条件添加到工作流,包括根据条件是 true 还是 false 所要遵循的操作路径。

    屏幕截图显示了工作流设计器中向工作流添加的空条件。

  2. 若要重命名条件,请在操作窗格的操作标题中选择“条件”。 将标题重命名为“如果资源组中的虚拟机已更改”。

    屏幕截图显示了工作流设计器和具有新名称的操作标题框。

  3. 创建一个条件,检查事件 body 中是否存在 data 对象,该对象的 operationName 参数等于 Microsoft.Compute/virtualMachines/write 操作。 有关详细信息,请参阅 Azure 事件网格事件架构

    1. 在“And”下方的第一行,点击左侧输入框内部以显示输入选项,包括动态内容列表(闪电图标)和表达式编辑器(函数图标)。 选择表达式编辑器。

      屏幕截图显示了工作流设计器,其中打开了重命名的条件操作和表达式编辑器。

    2. 在编辑器中,确保选择了“函数”。 在编辑器框中,输入以下表达式(该表达式从触发器返回操作名称),然后选择“添加”:

      triggerBody()?['data']['operationName']

      例如:

      屏幕截图显示了工作流设计器和条件编辑器,其中包含用于提取操作名称的表达式。

    3. 在中间的框中,保留“等于”(=) 运算符。

    4. 在右侧框中,输入要监视的操作,此示例中即为以下值:

      Microsoft.Compute/virtualMachines/write

    现在,已完成的条件应如下例所示:

    屏幕截图显示了工作流设计器,其中包含比较操作的条件。

    如果保存更改,然后从设计器视图切换到代码视图,然后返回到设计器视图,条件中的表达式将解析为 data.operationName 标记:

    屏幕截图显示了工作流设计器,其中包含解析令牌的条件。

  4. 保存工作流。

发送电子邮件通知

现在添加操作,以便在指定条件为 true 时接收电子邮件。

  1. 在条件的 True 框中,选择“添加操作”。+>

    屏幕截图显示了工作流设计器,其中打开了条件的“True”窗格,并选择了“添加操作”选项。

  2. 在“添加操作窗格”搜索框中,输入“发送电子邮件”。 根据电子邮件提供程序找到相应的连接器类型。 为连接器选择“发送电子邮件”操作。 例如:

    • 对于 Azure 工作或学校帐户,选择名为“发送电子邮件(V2)”的 Office 365 Outlook 连接器操作。
    • 对于个人 Microsoft 帐户,选择名为“发送电子邮件(V2)”的 Outlook.com 连接器操作。
    • 对于 Gmail 帐户,选择名为“发送电子邮件(V2)”的 Gmail 连接器操作。

    本教程将继续执行 Office 365 Outlook 连接器操作。 如果使用其他提供程序,步骤将保持不变,但 UI 显示可能会略有不同。

  3. 如果你还没有与你的电子邮件提供程序建立连接,请在系统要求你对标识进行身份验证时登录到你的电子邮件帐户。

  4. 将发送电子邮件操作重命名为以下标题:在虚拟机更新时发送电子邮件。

  5. 在操作窗格中,提供有关要发送的电子邮件的以下信息:

    提示

    若要在工作流中选择上述操作(触发器和操作)的输出,请执行以下步骤:

    1. 在编辑框中进行选择以显示输入选项,即动态内容列表(闪电图标)和表达式编辑器(函数图标)。 选择动态内容列表。
    2. 查找并选择要包含的输出。 对于多个结果,请选择列表中每个部分的“查看更多”
    参数 必选 说明
    收件人 < recipient@domain> 输入收件人的电子邮件地址。 为进行测试,可以使用自己的电子邮件地址。
    主题 更新资源:[使用者] 输入电子邮件的主题内容。 对于本教程,请输入指定的文本并选择该事件的“主题”字段。 此处,电子邮件主题包含更新资源(虚拟机)的名称。
    正文 资源:[主题]

    事件类型:[事件类型]

    事件 ID:[ID]

    时间:[事件时间]
    输入电子邮件的正文内容。 对于本教程,请输入指定的文本并选择事件的“主题”、“活动类型”、“ID”和“事件时间”输出,以便电子邮件包含触发事件的资源、事件类型、事件时间戳和更新的事件 ID。 对于本教程,资源是在触发器中选择的 Azure 资源组。

    若要在内容中添加空行,请按 Shift + Enter。

    注意

    如果你选择表示数组的字段,设计器会围绕引用数组的操作自动添加“For each”循环。 这样,工作流就会对每个数组项执行该操作。

    电子邮件操作可能如以下示例所示:

    屏幕截图显示了工作流设计器中要在虚拟机更新时通过电子邮件发送的选定输出。

    已完成的工作流现在如以下示例所示:

    显示设计器的屏幕截图,其中包含完整的工作流以及触发器和操作的详细信息。

  6. 保存工作流。

    工作流更新现已生效。 触发器在执行任何操作之前会等待对虚拟机的更改。 若要现在测试工作流,请继续学习下一节。

测试工作流

  1. 若要检查工作流是否将获取指定事件,请更新你的虚拟机。

    例如,你可以重设虚拟机大小

    几分钟后,你应会收到一封电子邮件。 例如:

  2. 要查看工作流的运行历史记录或触发历史记录,可选择资源边栏上的“概述”。

  3. 在“概述”页上选择“运行历史记录”。 若要查看有关某个工作流运行的更多详细信息,请选择该运行。

    屏幕截图显示了逻辑应用概述页,其中选择了一个成功的运行。

  4. 若要查看每个操作的输入和输出,请选择该操作。

    此信息可以帮助诊断和调试工作流中的问题。

    屏幕截图显示了工作流运行历史记录,其中包含有关每个运行的详细信息。

祝贺! 你已创建并运行一个工作流,用于监视 Azure 事件网格中的资源事件,并在发生这些事件时发送电子邮件。 此外,还学习了如何轻松创建工作流,以便将流程自动化,并将系统和云服务相集成。

可以使用事件网格和工作流监视其他配置更改,例如:

  • 虚拟机获取 Azure 基于角色的访问控制 (Azure RBAC) 权限。
  • 对网络接口 (NIC) 上的网络安全组 (NSG) 进行的更改。
  • 添加或删除虚拟机磁盘。
  • 公共 IP 地址被分配给虚拟机 NIC。

清理资源

本教程使用的资源和执行的操作将会在你的 Azure 订阅上产生费用。 完成本教程和测试后,请禁用或删除不希望其产生费用的任何资源。

  • 若要在不删除所做工作的情况下停止运行工作流,请禁用应用。 在逻辑应用边栏上,选择“概述”。 在工具栏中选择“禁用”。

    屏幕截图显示了“逻辑应用概述”页,其中选中了“禁用”按钮。

    提示

    如果没有看到逻辑应用边栏,请尝试返回到 Azure 门户主页,然后重新打开逻辑应用资源。

  • 若要永久删除逻辑应用,可选择边栏菜单上的“概述”。 在工具栏中选择“删除”。 确认要删除逻辑应用,然后选择“删除”

有关使用不同编程语言通过 Azure 事件网格发布事件和使用事件的示例,请参阅以下示例: