本文档介绍如何创建由 Dataflow 作业中的状态更改触发的事件驱动型工作流。
例如,您的工作流可能执行以下操作:
- 在关键作业失败时向值班工程师发送提醒。
- 在批量作业完成或启动其他 Dataflow 作业时通知用户。
- 清理作业使用的资源,例如 Cloud Storage 存储桶。
概览
Eventarc 是 Google Cloud 服务,可以侦听来自其他服务的事件,并将其路由到各种目的地。
运行 Dataflow 作业时,作业会经历各种状态,例如 JOB_STATE_QUEUED
、JOB_STATE_RUNNING
和 JOB_STATE_DONE
。Dataflow 与 Eventarc 集成可让您在作业更改状态时触发操作。
由于 Eventarc 是一项代管式服务,因此您无需预配或管理底层基础架构。
准备工作
- 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
-
在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目。
-
启用 Eventarc API。
-
在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目。
-
启用 Eventarc API。
如需使用 Eventarc API,您的项目必须具有足够的配额。此外,与 Eventarc 触发器关联的服务账号必须具有适当的权限。
选择事件目的地
选择接收事件的事件目的地。目的地决定了工作流中的下一步。
例如:
- 如需发送短信提醒,您可以使用 Cloud Functions 创建独立的 HTTP 触发器。
- 对于更复杂的工作流,您可以使用工作流。
- 如果您的 Dataflow 流水线是 Google Kubernetes Engine 上运行的大型解决方案的一部分,则触发器可以将事件路由到集群中运行的 GKE 服务。
如需详细了解此架构类型,请参阅 Eventarc 文档中的事件驱动型架构。
创建触发器
如需为 Dataflow 作业状态更改创建 Eventarc 触发器,请参阅以下文档之一:
- 将 Dataflow 事件路由到 Cloud Run
- 将 Dataflow 事件路由到 Google Kubernetes Engine
- 将 Dataflow 事件路由到 Workflows
- 为 Cloud 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"
}
如需详细了解作业状态,请参阅以下主题: