이 페이지에서는 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: 작업의 IDTEMPLATE_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 명령어에서 다음 플래그를 사용하세요.
parameters: 이 플래그를 사용하여 다음 유형의 파이프라인 옵션을 설정합니다.additional-pipeline-options: Flex 템플릿에서 직접 지원하지 않는 다른 Apache Beam 파이프라인 옵션을 설정하려면 이 플래그를 사용하세요.additional-experiments: 이 플래그를 사용하여 실험용 파이프라인 옵션(experiments옵션과 동일)을 설정합니다.
gcloud
parameters플래그를 사용하여 파이프라인 옵션을 포함합니다.additional-experiments및additional-pipeline-options플래그를 사용하여 런타임 실험 및 파이프라인 옵션을 포함합니다.
List 또는 Map 유형의 파라미터를 전달할 경우 YAML 파일의 파라미터를 정의하고 flags-file 플래그를 사용해야 할 수 있습니다.
API
parameters필드를 사용하여 파이프라인 옵션을 포함합니다.additionalExperiments및additionalPipelineOptions필드를 사용하여 런타임 실험 및 파이프라인 옵션을 포함합니다.
다음 예시에서는 요청 본문에 파이프라인 옵션, 실험, 추가 옵션을 포함하는 방법을 보여줍니다.
{
"jobName": "my-flex-template-job",
"parameters": {
"option_defined_in_metadata": "value"
},
"environment": {
"additionalExperiments": [
"use_runner_v2"
],
"additionalPipelineOptions": {
"common_pipeline_option": "value"
}
}
}
Flex 템플릿을 사용할 때는 파이프라인 초기화 중 일부 파이프라인 옵션을 구성할 수 있지만 다른 파이프라인 옵션을 변경할 수 없습니다. Flex 템플릿에 필요한 명령줄 인수를 덮어쓰면 작업이 템플릿 런처로 전달된 파이프라인 옵션을 무시, 재정의, 폐기할 수 있습니다. 작업이 실행되지 않거나 Flex 템플릿을 사용하지 않는 작업이 실행될 수 있습니다. 자세한 내용은 작업 파일 읽기 실패를 참조하세요.
파이프라인을 초기화하는 동안 다음 파이프라인 옵션을 변경하지 마세요.
자바
runnerprojectjobNametemplateLocationregion
Python
runnerprojectjob_nametemplate_locationregion
Go
runnerprojectjob_nametemplate_locationregion
메타데이터 기반 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를 대신 사용합니다.
단계에 따라 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://로 시작해야 합니다.
environment매개변수를 사용하여 환경 설정을 변경합니다. 자세한 내용은FlexTemplateRuntimeEnvironment를 참조하세요.선택사항: 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:launchFILE_PATH를 요청 본문이 포함된 JSON 파일의 경로로 바꿉니다.
Dataflow 모니터링 인터페이스를 사용하여 같은 이름의 새 작업이 생성되었는지 확인합니다. 이 작업의 상태가 업데이트되었습니다.
다음 단계
- Apache Beam 파이프라인용 Flex 템플릿을 빌드하는 방법을 알아보세요.
- 기본 템플릿 및 Flex 템플릿과 사용 사례 시나리오에 대한 자세한 내용은 Dataflow 템플릿을 참조하세요.
- Flex 템플릿 문제 해결 정보는 Flex 템플릿 제한 시간 문제 해결을 참조하세요.
- 그 밖의 참조 아키텍처, 다이어그램, 튜토리얼, 권장사항을 알아보려면 클라우드 아키텍처 센터를 확인하세요.