您可以使用 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 触发工作流。