이 문서에서는 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 트리거와 연결된 서비스 계정에 적절한 권한이 있어야 합니다.
이벤트 대상 선택
이벤트를 수신할 이벤트 대상을 선택합니다. 대상에 따라 워크플로의 다음 단계가 결정됩니다.
예를 들면 다음과 같습니다.
- SMS 알림을 전송하기 위해 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"
}
작업 상태에 대한 자세한 내용은 다음 주제를 참조하세요.