您可以使用 Eventarc 触发器根据某个事件或一组事件执行工作流。事件会从事件提供程序路由到感兴趣的事件接收器。
Eventarc 通过 HTTP 请求以 CloudEvents 格式将事件传递给事件接收器。 Workflows 服务会将事件转换为 JSON 对象(遵循 CloudEvents 规范),并将事件作为工作流运行时参数传递到工作流执行过程中。
触发工作流执行:
- 创建了与触发器的过滤条件匹配的审核日志。例如,请参阅本快速入门,了解如何使用 Cloud Audit Logs 通过来自 BigQuery 的事件触发 Workflows。
- 响应直接事件,例如更新 Cloud Storage 存储桶或更新 Firebase Remote Config 模板。例如,请参阅本快速入门,了解如何使用来自 Cloud Storage 的直接事件触发 Workflows。
- 通过发布到 Pub/Sub 主题的消息。例如,请参阅本快速入门,了解如何使用 Pub/Sub 消息触发 Workflows。
请注意以下几点:
当工作流执行开始时,事件会被视为已传送,并且实际执行会在 Workflows 服务中异步进行。
在工作流执行开始后,系统会重试由事件触发的执行,但之后会失败。如需了解详情,请参阅事件重试政策。
将 Workflows 用作 Eventarc 触发器的目标时,超过 Workflows 参数大小上限的事件将无法触发工作流执行。如需了解详情,请参阅配额和限制。
在受服务边界保护的项目中,当将事件路由到其 Pub/Sub 推送端点设置为 Workflows 执行的 Workflows 目的地时,您只能通过 Eventarc 创建新的 Pub/Sub 推送订阅。请注意,用于对 Workflows 端点进行推送身份验证的服务帐号必须包含在服务边界内。如需了解详情,请参阅使用 VPC Service Controls 设置服务边界。
使用 Google Cloud CLI 创建触发器
您可以通过运行包含必需和可选标志的 gcloud eventarc triggers create
命令来创建触发器。
如需了解详情,请参阅为特定提供方、事件类型和 Workflows 目标创建触发器时“创建触发器”部分中的 gcloud 说明。
使用控制台创建触发器
以下步骤介绍了如何在 Google Cloud 控制台的工作流页面上创建触发器。
准备工作
-
启用 Eventarc and Pub/Sub API。
创建服务帐号,以便 Eventarc 可以向 Workflows API 发出请求:
在 Google Cloud 控制台中,转到服务账号页面。
选择项目,然后点击创建服务账号。
在服务帐号名称字段中,输入一个长度介于 6 到 30 个字符之间的名称。
可以包含小写字母数字字符和短划线。在服务账号创建完毕后,无法再更改其名称。
点击创建并继续。
为新服务帐号授予 workflows.invoker 角色,以便该帐号具有触发您的工作流的权限。在选择角色列表中,依次选择 Workflows > Workflows Invoker。
如果您开发的是正式版应用,请始终尽可能授予最宽松的角色。如需了解详情,请参阅管理对项目、文件夹和组织的访问权限。
点击完成。
如需允许将运行 Eventarc 命令的主帐号充当 Identity and Access Management (IAM) 服务帐号,请授予一个允许主帐号模拟服务帐号的角色。
配置触发器
如果您还没有要触发的工作流,请创建一个并部署一个。
在 Google Cloud 控制台中,转到 Workflows 页面:
在 Workflows 页面上,选择一个工作流以转到其详情页面。
在工作流详细信息页面上,选择 edit 修改。
在修改工作流页面上,依次选择添加新触发器 > Eventarc。
此时会打开 Eventarc 触发器窗格。
按照说明为特定提供商、事件类型和 Workflows 目标创建触发器,并参阅“创建触发器”部分中的控制台说明。
选择调用您的工作流的服务帐号。
这会指定您之前向其授予
workflows.invoker
角色的 IAM 服务帐号,以便该帐号有权触发您的工作流。点击保存触发器。
Eventarc 触发器会列在工作流详细信息页面的触发器标签页中。
如果要更新或删除触发器,您必须修改工作流程:
- 在工作流详细信息页面上,选择 edit 修改。
- 在触发器部分中,找到要更新或删除的触发器。
- 点击 edit 修改资源或 delete 删除资源。
现在,与触发器过滤条件匹配的事件会触发工作流执行。
使用 Terraform 创建触发器
您可以使用 Terraform 为工作流创建触发器。如需了解详情,请参阅使用 Eventarc 和 Terraform 触发工作流。