使用 Eventarc 管理 Dataflow 作业

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

例如,您的工作流可能:

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

概览

Eventarc 是一项 Google Cloud 服务,可监听来自其他服务的事件,并将其路由到各种目标位置。

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

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

准备工作

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Eventarc APIs.

    Enable the APIs

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

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Eventarc APIs.

    Enable the APIs

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

选择事件目标位置

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

例如:

  • 如需发送短信提醒,您可以使用 Cloud Run functions 来创建独立的 HTTP 触发器。
  • 对于更复杂的工作流,您可以使用 Workflows。
  • 如果您的 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"
}

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

后续步骤