使用事件或 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 说明。

使用控制台创建触发器

以下步骤介绍了如何在 Workflows页面上的 Google Cloud 控制台中创建触发器。

准备工作

  1. 启用 Eventarc 和 Pub/Sub API。

    启用 API 所需的角色

    如需启用 API,您需要拥有 Service Usage Admin IAM 角色 (roles/serviceusage.serviceUsageAdmin),该角色包含 serviceusage.services.enable 权限。了解如何授予 角色

    启用 API

  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 触发工作流

后续步骤