使用 Eventarc 管理 Dataflow 作业

本文档介绍如何创建由 Dataflow 作业中的状态更改触发的事件驱动型工作流。

例如,您的工作流可能执行以下操作:

  • 在关键作业失败时向值班工程师发送提醒。
  • 在批量作业完成或启动其他 Dataflow 作业时通知用户。
  • 清理作业使用的资源,例如 Cloud Storage 存储桶。

概览

Eventarc 是 Google Cloud 服务,可以侦听来自其他服务的事件,并将其路由到各种目的地。

运行 Dataflow 作业时,作业会经历各种状态,例如 JOB_STATE_QUEUEDJOB_STATE_RUNNINGJOB_STATE_DONE。Dataflow 与 Eventarc 集成可让您在作业更改状态时触发操作。

由于 Eventarc 是一项代管式服务,因此您无需预配或管理底层基础架构。

准备工作

  1. 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. 确保您的 Google Cloud 项目已启用结算功能

  4. 启用 Eventarc API。

    启用 API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. 确保您的 Google Cloud 项目已启用结算功能

  7. 启用 Eventarc API。

    启用 API

如需使用 Eventarc API,您的项目必须具有足够的配额。此外,与 Eventarc 触发器关联的服务账号必须具有适当的权限

选择事件目的地

选择接收事件的事件目的地。目的地决定了工作流中的下一步。

例如:

  • 如需发送短信提醒,您可以使用 Cloud Functions 创建独立的 HTTP 触发器。
  • 对于更复杂的工作流,您可以使用工作流。
  • 如果您的 Dataflow 流水线是 Google Kubernetes Engine 上运行的大型解决方案的一部分,则触发器可以将事件路由到集群中运行的 GKE 服务。

如需详细了解此架构类型,请参阅 Eventarc 文档中的事件驱动型架构

创建触发器

如需为 Dataflow 作业状态更改创建 Eventarc 触发器,请参阅以下文档之一:

(可选)您可以按 Dataflow 作业 ID 过滤事件。例如,您可以选择与正则表达式匹配的作业 ID。如需了解详情,请参阅了解路径模式

处理事件

事件数据描述了事件触发时的 Dataflow 作业。载荷类似于 Job 资源类型,但省略了 stepspipeline_descriptiontransform_name_mapping 字段。此外,根据作业状态,某些字段可能不存在。

下面展示了一个示例载荷:

{
  "id":"2023-04-13_16_28_37-12345678",
  "projectId":"my-project",
  "name":"job1",
  "currentState":"JOB_STATE_QUEUED",
  "currentStateTime":"2023-04-13T23:28:37.437622Z",
  "createTime":"2023-04-13T23:28:37.437622Z",
  "location":"us-central1",
  "startTime":"2023-04-13T23:28:37.437622Z"
}

如需详细了解作业状态,请参阅以下主题:

后续步骤