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

您可以使用 Eventarc 触发器根据某个事件或一组事件执行工作流。事件会从事件提供方路由到对其感兴趣的事件接收器。

Eventarc 通过 HTTP 请求以 CloudEvents 格式将事件传递给事件接收器。 Workflows 服务将事件转换为 JSON 对象(遵循 CloudEvents 规范),并将事件作为工作流运行时参数传递给工作流执行。

触发工作流执行的过程:

请注意以下几点:

  • 系统会在工作流执行开始后立即视为已传送事件,而实际执行会在 Workflows 服务中异步进行。

  • 如果工作流执行作业中,则系统不会重试由事件触发的执行作业, 但之后会失败有关详情,请参阅 事件重试政策

  • Workflows 的重复信息删除窗口,用于确保正好一次 事件处理时间为 24 小时。

  • 将 Workflows 作为 Eventarc 触发器的目的地时,大于 Workflows 参数大小上限的事件将无法触发工作流执行。如需了解详情,请参阅配额和限制

  • 在受服务边界保护的项目中,将事件路由到 Pub/Sub 中 推送端点设置为 Workflows 执行作业,那么您只能 创建新的 Pub/Sub 推送订阅 Eventarc。请注意,用于推送的服务账号 必须为 Workflows 端点添加身份验证 管理服务边界如需了解详情,请参阅使用 VPC Service Controls 设置服务边界

使用 Google Cloud CLI 创建触发器

您可以通过运行包含必需和可选标志的 gcloud eventarc triggers create 命令来创建触发器。

有关详情,请参阅gcloud说明 触发器”当 为特定提供商、事件类型和 Workflows 目标平台创建触发器

使用控制台创建触发器

以下步骤介绍了如何在 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 触发工作流

后续步骤