使用事件或 Pub/Sub 消息触发工作流

您可以使用 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 控制台中的工作流页面上创建触发器。

准备工作

  1. Enable the Eventarc and Pub/Sub APIs.

    Enable the APIs

  2. 创建一个服务账号,以便 Eventarc 可以向 Workflows API 发出请求:

    1. 在 Google Cloud 控制台中,转到服务账号页面。

      转到“服务账号”

    2. 选择项目,然后点击创建服务账号

    3. 服务账号名称字段中,输入一个长度介于 6 到 30 个字符之间的名称。

      它可以包含小写字母数字字符和短划线。在服务账号创建完毕后,无法再更改其名称。

    4. 点击创建并继续

    5. 为您的新服务账号授予 workflows.invoker 角色,以便该账号有权触发您的工作流。在选择角色列表中,依次选择 Workflows > Workflows Invoker

      如果您开发的是正式版应用,请始终尽可能授予最小访问权限角色。如需了解详情,请参阅管理对项目、文件夹和组织的访问权限

    6. 点击完成

  3. 如需允许将运行 Eventarc 命令的主账号充当 Identity and Access Management (IAM) 服务账号,请授予一个角色以让主账号能够模拟服务账号

配置触发器

  1. 如果您还没有要触发的工作流,请创建和部署工作流

  2. 在 Google Cloud 控制台中,转到 Workflows 页面:

    进入 Workflows

  3. 在“Workflows”(工作流)页面上,选择一个工作流以转到其详情页面。

  4. 工作流详细信息页面上,选择 修改

  5. 修改工作流页面上,依次选择添加新触发器 > Eventarc

    系统随即会打开 Eventarc 触发器窗格。

  6. 按照说明为特定提供商、事件类型和Workflows 目标创建触发器,并参阅“创建触发器”部分中的控制台说明。

  7. 选择调用您的工作流的服务账号

    这会指定您之前授予了 workflows.invoker 角色的 IAM 服务账号,以便该账号有权触发您的工作流。

  8. 点击保存触发器

    Eventarc 触发器列在工作流详情页面的触发器标签页上。

  9. 如果您想更新或删除触发器,则必须修改工作流:

    1. 工作流详细信息页面上,选择 修改
    2. 触发器部分,找到要更新或删除的触发器。
    3. 点击 修改资源 删除资源

现在,与触发器的过滤条件匹配的事件会触发工作流执行。

使用 Terraform 创建触发器

您可以使用 Terraform 为工作流创建触发器。如需了解详情,请参阅使用 Eventarc 和 Terraform 触发工作流

后续步骤