通过事件或 Pub/Sub 消息触发工作流

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

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

触发工作流执行:

请注意以下几点:

  • 当工作流执行开始时,事件会被视为已传送,并且实际执行会在 Workflows 服务中异步进行。

  • 在工作流执行开始后,系统会重试由事件触发的执行,但之后会失败。如需了解详情,请参阅事件重试政策

  • 将 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. 启用 Eventarc and Pub/Sub API。

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

后续步骤