Dataflow에서 Flex 템플릿 실행

이 페이지에서는 Flex 템플릿을 사용하여 Dataflow 작업을 실행하는 방법을 설명합니다. Flex 템플릿을 사용하면 Apache Beam 개발 환경 없이 파이프라인을 실행할 수 있도록 Dataflow 파이프라인을 패키징할 수 있습니다.

필수 권한

Flex 템플릿을 실행하면 Dataflow가 자동으로 작업을 만듭니다. 작업을 만들려면 Dataflow 서비스 계정에 다음 권한이 필요합니다.

  • dataflow.serviceAgent

Dataflow를 처음 사용할 때 서비스가 자동으로 이 역할을 할당하므로 이 권한을 부여할 필요가 없습니다.

기본적으로 Compute Engine 서비스 계정은 런처 VM 및 작업자 VM에 사용됩니다. 서비스 계정에는 다음과 같은 역할 및 기능이 필요합니다.

  • 스토리지 객체 관리자(roles/storage.objectAdmin)
  • 뷰어(roles/viewer)
  • Dataflow 작업자(roles/dataflow.worker)
  • 스테이징 버킷에 대한 읽기 및 쓰기 권한
  • Flex 템플릿 이미지에 대한 읽기 권한입니다.

스테이징 버킷에 대한 읽기 및 쓰기 권한을 부여하려면 스토리지 객체 관리자(roles/storage.objectAdmin) 역할을 사용하면 됩니다. 자세한 내용은 Cloud Storage의 IAM 역할을 참조하세요.

Flex 템플릿 이미지에 대한 읽기 권한을 부여하려면 스토리지 객체 뷰어(roles/storage.objectViewer) 역할을 사용하면 됩니다. 자세한 내용은 액세스 제어 구성을 참조하세요.

Flex 템플릿 실행

Flex 템플릿을 실행하려면 gcloud dataflow flex-template run 명령어를 사용합니다.

gcloud dataflow flex-template run JOB_ID \
  --template-file-gcs-location gs://TEMPLATE_FILE_LOCATION \
  --region REGION \
  --staging-location STAGING_LOCATION \
  --temp-location TEMP_LOCATION \
  --parameters  PARAMETERS \
  --additional-user-labels LABELS \

다음을 바꿉니다.

  • JOB_ID: 작업의 ID

  • TEMPLATE_FILE_LOCATION: 템플릿 파일의 Cloud Storage 위치

  • REGION: Dataflow 작업을 실행할 리전

  • STAGING_LOCATION: 로컬 파일을 스테이징할 Cloud Storage 위치

  • TEMP_LOCATION: 임시 파일을 쓸 Cloud Storage 위치입니다. 설정하지 않으면 스테이징 위치가 기본값입니다.

  • PARAMETERS: 작업의 파이프라인 매개변수

  • LABELS: 선택사항. KEY_1=VALUE_1,KEY_2=VALUE_2,... 형식을 사용하여 작업에 연결된 라벨입니다.

템플릿 실행의 스테이징 단계에서 Dataflow는 스테이징 위치에 파일을 씁니다. Dataflow는 이러한 스테이징된 파일을 읽어 작업 그래프를 만듭니다. 실행 단계에서 Dataflow는 임시 위치에 파일을 씁니다.

파이프라인 옵션 설정

Flex 템플릿을 실행할 때 파이프라인 옵션을 설정하려면 gcloud dataflow flex-template run 명령어에서 다음 플래그를 사용하세요.

gcloud

List 또는 Map 유형의 파라미터를 전달할 경우 YAML 파일의 파라미터를 정의하고 flags-file 플래그를 사용해야 할 수 있습니다.

API

다음 예시에서는 요청 본문에 파이프라인 옵션, 실험, 추가 옵션을 포함하는 방법을 보여줍니다.

{
  "jobName": "my-flex-template-job",
  "parameters": {
    "option_defined_in_metadata": "value"
  },
  "environment": {
    "additionalExperiments": [
      "use_runner_v2"
    ],
    "additionalPipelineOptions": {
      "common_pipeline_option": "value"
    }
  }
}

Flex 템플릿을 사용할 때는 파이프라인 초기화 중 일부 파이프라인 옵션을 구성할 수 있지만 다른 파이프라인 옵션을 변경할 수 없습니다. Flex 템플릿에 필요한 명령줄 인수를 덮어쓰면 작업이 템플릿 런처로 전달된 파이프라인 옵션을 무시, 재정의, 폐기할 수 있습니다. 작업이 실행되지 않거나 Flex 템플릿을 사용하지 않는 작업이 실행될 수 있습니다. 자세한 내용은 작업 파일 읽기 실패를 참조하세요.

파이프라인을 초기화하는 동안 다음 파이프라인 옵션을 변경하지 마세요.

자바

  • runner
  • project
  • jobName
  • templateLocation
  • region

Python

  • runner
  • project
  • job_name
  • template_location
  • region

Go

  • runner
  • project
  • job_name
  • template_location
  • region

메타데이터 기반 SSH 키를 사용하는 VM에서 프로젝트 SSH 키 차단

VM에서 프로젝트 SSH 키를 차단하여 VM이 프로젝트 메타데이터에 저장된 SSH 키를 허용하지 않도록 할 수 있습니다. additional-experiments 플래그를 block_project_ssh_keys 서비스 옵션과 함께 사용합니다.

--additional-experiments=block_project_ssh_keys

자세한 내용은 Dataflow 서비스 옵션을 참조하세요.

Flex 템플릿 작업 업데이트

다음 요청 예시는 projects.locations.flexTemplates.launch 메서드를 사용하여 템플릿 스트리밍 작업을 업데이트하는 방법을 보여줍니다. gcloud CLI를 사용하려면 기존 파이프라인 업데이트를 참조하세요.

기본 템플릿을 업데이트하려면 projects.locations.templates.launch를 대신 사용합니다.

  1. 단계에 따라 Flex 템플릿에서 스트리밍 작업을 만듭니다. 수정된 값을 사용하여 다음 HTTP POST 요청을 보냅니다.

    POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/REGION/flexTemplates:launch
    {
        "launchParameter": {
          "update": true
          "jobName": "JOB_NAME",
          "parameters": {
            "input_subscription": "projects/PROJECT_ID/subscriptions/SUBSCRIPTION_NAME",
            "output_table": "PROJECT_ID:DATASET.TABLE_NAME"
          },
        "containerSpecGcsPath": "STORAGE_PATH"
        },
    }
    
    • PROJECT_ID를 프로젝트 ID로 바꿉니다.
    • REGION을 업데이트하려는 작업의 Dataflow 리전으로 바꿉니다.
    • JOB_NAME을 업데이트할 작업의 정확한 이름으로 바꿉니다.
    • parameters를 키/값 쌍 목록으로 설정합니다. 나열된 매개변수는 이 템플릿 예시에 적용됩니다. 커스텀 템플릿을 사용하는 경우 매개변수를 필요에 따라 수정합니다. 예시 템플릿을 사용하는 경우 다음 변수를 바꿉니다.
      • SUBSCRIPTION_NAME을 Pub/Sub 구독 이름으로 바꿉니다.
      • DATASET를 BigQuery 데이터 세트 이름으로 바꿉니다.
      • TABLE_NAME을 BigQuery 테이블 이름으로 바꿉니다.
    • STORAGE_PATH를 템플릿 파일의 Cloud Storage 위치로 바꿉니다. 위치는 gs://로 시작해야 합니다.
  2. environment 매개변수를 사용하여 환경 설정을 변경합니다. 자세한 내용은 FlexTemplateRuntimeEnvironment를 참조하세요.

  3. 선택사항: curl(Linux, macOS 또는 Cloud Shell)을 사용하여 요청을 보내려면 요청을 JSON 파일에 저장한 후 다음 명령어를 실행합니다.

    curl -X POST -d "@FILE_PATH" -H "Content-Type: application/json" -H "Authorization: Bearer $(gcloud auth print-access-token)"  https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/REGION/flexTemplates:launch
    

    FILE_PATH를 요청 본문이 포함된 JSON 파일의 경로로 바꿉니다.

  4. Dataflow 모니터링 인터페이스를 사용하여 같은 이름의 새 작업이 생성되었는지 확인합니다. 이 작업의 상태가 업데이트되었습니다.

다음 단계