你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用范围:Azure 逻辑应用(消耗)
若要监视和响应 Azure 资源或外部资源中发生的特定事件,可以使用 Azure 事件网格和 Azure 逻辑应用。 可以使用 Azure 逻辑应用创建具有最少代码的自动化消耗逻辑应用工作流。 可以让这些资源将事件发布到 Azure 事件网格。 反过来,Azure 事件网格会将这些事件推送到具有队列、Webhook 或事件中心的订阅者作为终结点。 作为订阅者,你的工作流会在运行事件处理步骤之前,等待这些事件到达 Azure 事件网格。
下面是发布者可以通过 Azure 事件网格发送到订阅服务器的一些事件:
- 创建、读取、更新或删除资源。 例如,你可以监视可能在 Azure 订阅中产生费用并影响你账单的更改。
- 从 Azure 订阅添加或删除某个人。
- 你的应用可执行特定的操作。
- 队列中显示新消息。
在本教程中,你将创建在 多租户 Azure 逻辑应用中运行的消耗逻辑应用资源。 应用基于 消耗定价模型。 你将使用此逻辑应用资源创建一个工作流,用于监视对虚拟机的更改,并发送有关这些更改的电子邮件。 当你创建具有 Azure 资源事件订阅的工作流时,事件会通过 Azure 事件网格从该资源流向工作流。
在本教程中,你将了解如何执行以下操作:
- 创建逻辑应用资源以及通过 Azure 事件网格监视事件的工作流。
- 添加一个专门检查虚拟机更改的条件。
- 虚拟机更改时发送电子邮件。
先决条件
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 地址。
创建逻辑应用资源
使用 Azure 帐户登录到 Azure 门户。
在 Azure 主页中,选择“创建资源”“集成”>“逻辑应用”。
选择“ 消耗>多租户”。
在“创建逻辑应用”下,提供有关逻辑应用资源的信息:
参数 需要 值 说明 订阅 是 < Azure-subscription-name> 在本教程中,选择同一 Azure 订阅用于所有服务。 资源组 是 <Azure-resource-group 逻辑应用的 Azure 资源组名称,可以在本教程中选择用于所有服务。 逻辑应用名称 是 < logic-app-name> 提供逻辑应用的唯一名称。 区域 是 < Azure 区域> 在本教程中,选择同一区域用于所有服务。 注意
本教程仅适用于遵循不同用户体验的消耗型逻辑应用。 有关详细信息,请参阅 标准单租户逻辑应用与消耗多租户逻辑应用之间的差异。
完成操作后,选择“查看 + 创建”。 在下一页上,确认提供的信息,然后选择“ 创建”。
添加 Azure 事件网格触发器
若要添加 Azure 事件网格触发器,以便可以监视虚拟机的资源组,请执行以下步骤:
在 Azure 门户中,打开你的消耗逻辑应用资源。
在资源边栏的 “开发工具”下,选择设计器以打开工作流。
在设计器中,按照以下 常规步骤 将名为 “资源事件发生时”的 Azure 事件网格触发器添加到工作流。
在 “创建连接 ”窗格中,提供以下信息:
参数 需要 说明 身份验证 是 选择要连接所需的身份验证类型。 所选内容确定此连接所需的其他参数值。 例如,使用 OAuth 身份验证时, 会显示租户 ID 列表,并显示 Azure 订阅的 Microsoft Entra 租户。 确认显示正确的租户:
注意
如果使用个人 Microsoft 帐户登录,如 @outlook.com 或 @hotmail.com,Azure 事件网格触发器可能不会正确显示。 解决方法是,选择 “使用服务主体进行连接 ”,或作为 Azure 订阅的 Microsoft Entra 的成员进行身份验证。 例如 ,user-name@emailoutlook.onmicrosoft.com。
完成后,选择“登录”。
现在,使用来自发布服务器的事件的订阅设置工作流。
在触发器窗格中,提供有关事件订阅的以下信息:
参数 需要 值 说明 资源类型 是 < 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 资源组
- 了解事件筛选
- 筛选事件网格的事件若要添加可选参数,请打开 “高级参数 ”列表,然后选择所需的参数。 否 {参阅说明} - 前缀筛选器:对于本教程,请将此值留空。 默认行为与所有值匹配。 但是,你可以指定一个前缀字符串作为筛选器,例如,特定资源的路径和参数。
- 后缀筛选器:对于本教程,请将此值留空。 默认行为与所有值匹配。 但是,当你仅需要特定文件类型,可以指定一个后缀字符串作为筛选器,例如,文件扩展名。
- 订阅名称:在本教程中,可提供事件订阅的唯一名称。保存工作流。 在设计器工具栏上选择“保存”。
使用 Azure 事件网格触发器保存工作流时,Azure 会将工作流的事件订阅创建到所选资源。 当资源将事件发布到 Azure 事件网格服务时,该服务会将事件推送到工作流。 此事件触发并运行下一部分中定义的工作流。
保存工作流时,逻辑应用资源将实时显示在 Azure 门户中,并开始从 Azure 事件网格侦听事件。 但是,在添加执行任务的作之前,工作流不会执行任何其他作。
添加条件
若要仅在特定事件或作发生时在工作流中运行作,请添加检查该事件或作的条件。 本教程检查 Microsoft.Compute/virtualMachines/write 作。 如果此条件为 true,工作流中的另一个作会向你发送一封电子邮件,其中包含有关更新的虚拟机的信息。
在设计器中,按照以下 常规步骤 将名为 Condition 的内置作添加到工作流。
设计器将空条件添加到工作流,包括根据条件为 true 还是 false 遵循的作路径。
若要重命名条件,请在作窗格的作标题中选择“ 条件”。 将标题重命名为“ 如果资源组中的虚拟机已更改”。
创建一个条件,用于检查参数等于
body作的对象data的事件operationName。 有关详细信息,请参阅 Azure 事件网格事件架构。在 “And”下的第一行中,在左侧框中选择以显示输入选项,即动态内容列表(闪电图标)和表达式编辑器(函数图标)。 选择表达式编辑器。
在编辑器中,确保已选择 函数 。 在编辑器框中,输入以下表达式,该表达式从触发器返回作名称,然后选择“ 添加” :
triggerBody()?['data']['operationName']例如:
在中间框中,保留“等于”(=) 运算符。
在右侧框中,输入要监视的操作,此示例中即为以下值:
Microsoft.Compute/virtualMachines/write
现在,已完成的条件应如下例所示:
如果保存更改,然后从设计器视图切换到代码视图,然后返回到设计器视图,条件中的表达式将解析为 data.operationName 标记:
保存工作流。
发送电子邮件通知
现在添加操作,以便在指定条件为 true 时接收电子邮件。
在条件的 True 框中,选择“ +>添加作”。
在 “添加作 窗格”搜索框中,输入 发送电子邮件。 根据电子邮件提供商找到相应的连接器类型。 为连接器选择“发送电子邮件”作。 例如:
- 对于 Azure 工作或学校帐户,请选择名为 “发送电子邮件”(V2)的 Office 365 Outlook 连接器作。
- 对于个人Microsoft帐户,请选择名为 “发送电子邮件”(V2)的 Outlook.com 连接器作。
- 对于 Gmail 帐户,请选择名为“发送电子邮件”的 Gmail 连接器作(V2)。
本教程继续执行 Office 365 Outlook 连接器作。 如果使用其他提供程序,步骤保持不变,但 UI 可能略有不同。
如果还没有电子邮件提供商的连接,请在系统要求你对标识进行身份验证时登录到你的电子邮件帐户。
将发送电子邮件作重命名为以下标题: 在虚拟机更新时发送电子邮件。
在作窗格中,提供有关要发送电子邮件的以下信息:
提示
若要在工作流中选择上述作(触发器和作)的输出,请执行以下步骤:
- 在编辑框中选择以显示输入选项,即动态内容列表(闪电图标)和表达式编辑器(函数图标)。 选择动态内容列表。
- 查找并选择要包含的输出。 对于多个结果,请选择列表中每个部分的“查看更多”。
参数 需要 值 说明 To 是 <recipient@domain> 输入收件人的电子邮件地址。 为进行测试,可以使用自己的电子邮件地址。 主题 是 资源更新:[主题] 输入电子邮件的主题内容。 对于本教程,请输入指定的文本并选择该事件的“主题”字段。 此处,电子邮件主题包含更新资源(虚拟机)的名称。 正文 是 资源:[主题]
事件类型:[事件类型]
事件 ID:[ID]
Time:[事件时间]输入电子邮件的正文内容。 对于本教程,请输入指定的文本并选择事件 的主题、 事件类型、 ID 和 事件时间 输出,以便电子邮件包含触发事件、事件类型、事件时间戳和更新事件 ID 的资源。 对于本教程,资源是在触发器中选择的 Azure 资源组。
若要在内容中添加空白行,请按 Shift + Enter。注意
如果你选择表示数组的字段,设计器会围绕引用数组的操作自动添加“For each”循环。 这样,工作流会对每个数组项执行该作。
电子邮件作可能如以下示例所示:
已完成的工作流现在如以下示例所示:
保存工作流。
工作流更新现已推出。 工作流触发器在执行任何作之前会等待对虚拟机的更改。 若要现在测试工作流,请继续学习下一节。
测试工作流
若要检查工作流是否将获取指定事件,请更新你的虚拟机。
例如,你可以重设虚拟机大小。
几分钟后,你应会收到一封电子邮件。 例如:
若要查看工作流的运行历史记录或触发历史记录,请在资源边栏上选择“ 概述”。
在“ 概述 ”页上,选择“ 运行历史记录”。 若要查看有关工作流运行的更多详细信息,请选择该运行。
若要查看每个作的输入和输出,请选择该作。
此信息可以帮助你诊断和调试工作流中的问题。
祝贺! 你已创建并运行一个工作流,用于监视 Azure 事件网格中的资源事件,并在发生这些事件时发送电子邮件。 此外,还学习了如何轻松创建工作流,以便将流程自动化,并将系统和云服务相集成。
可以使用事件网格和工作流监视其他配置更改,例如:
- 虚拟机获取 Azure 基于角色的访问控制(Azure RBAC)权限。
- 对网络接口 (NIC) 上的网络安全组 (NSG) 进行的更改。
- 添加或删除虚拟机磁盘。
- 公共 IP 地址被分配给虚拟机 NIC。
清理资源
本教程使用的资源和执行的操作将会在你的 Azure 订阅上产生费用。 完成本教程和测试后,请禁用或删除不想产生费用的任何资源。
若要在不删除所做工作的情况下停止运行工作流,请禁用应用。 在逻辑应用边栏上,选择“ 概述”。 在工具栏中选择“禁用”。
提示
如果没有看到逻辑应用边栏,请尝试返回到 Azure 门户主页,然后重新打开逻辑应用资源。
若要永久删除逻辑应用,请在边栏菜单上选择“ 概述”。 在工具栏中选择“删除”。 确认要删除逻辑应用并选择“ 删除”。
相关内容
有关使用不同的编程语言发布事件和使用 Azure 事件网格的事件的示例,请参阅以下示例: