您可以使用 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 的去重窗口为 24 小时,可确保对事件进行一次性处理。
将 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 控制台的工作流页面上创建触发器。
准备工作
-
Enable the Eventarc and Pub/Sub APIs.
创建一个服务账号,以便 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 触发工作流。