使用 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. 在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目

    转到“项目选择器”

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

  4. 启用 Eventarc API。

    启用 API

  5. 在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目

    转到“项目选择器”

  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"
}

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

后续步骤