本文档介绍了如何创建由 Dataflow 作业状态变化触发的事件驱动型工作流。
例如,您的工作流可能:
- 如果关键作业失败,向值班工程师发送提醒。
- 在批量作业完成时通知用户,或启动其他 Dataflow 作业。
- 清理作业使用的资源,例如 Cloud Storage 存储桶。
概览
Eventarc 是一项 Google Cloud 服务,可监听来自其他服务的事件,并将其路由到各种目标位置。
运行 Dataflow 作业时,作业会经历各种状态,例如 JOB_STATE_QUEUED
、JOB_STATE_RUNNING
和 JOB_STATE_DONE
。借助 Dataflow 与 Eventarc 的集成,您可以在作业更改状态时触发操作。
由于 Eventarc 是一项托管式服务,因此您无需预配或管理底层基础架构。
准备工作
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Eventarc APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Eventarc APIs.
如需使用 Eventarc API,您的项目必须具有足够的配额。此外,与 Eventarc 触发器关联的服务账号必须具有适当的权限。
选择事件目标位置
选择接收事件的事件目的地。目标位置决定了工作流中的下一步。
例如:
- 如需发送短信提醒,您可以使用 Cloud Run functions 来创建独立的 HTTP 触发器。
- 对于更复杂的工作流,您可以使用 Workflows。
- 如果您的 Dataflow 流水线是 Google Kubernetes Engine 上运行的更大解决方案的一部分,触发器可以将事件路由到集群中运行的 GKE 服务。
如需详细了解这种架构,请参阅 Eventarc 文档中的事件驱动架构。
创建触发器
如需为 Dataflow 作业状态更改创建 Eventarc 触发器,请参阅以下文档之一:
- 将 Dataflow 事件路由到 Cloud Run
- 将 Dataflow 事件路由到 Google Kubernetes Engine
- 将 Dataflow 事件路由到 Workflows
- 为 Cloud Run functions 创建触发器
您可以酌情按 Dataflow 作业 ID 过滤事件。例如,您可以选择与正则表达式匹配的作业 ID。如需了解详情,请参阅了解路径模式。
处理事件
事件数据描述了事件触发时的 Dataflow 作业。该载荷类似于 Job
资源类型,只是省略了 steps
、pipeline_description
和 transform_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"
}
如需详细了解作业状态,请参阅以下主题: