이 문서에서는 Batch 작업 만들기의 기초와 스크립트 또는 컨테이너 이미지를 기반으로 작업을 만들어서 실행하고 사전 정의된 변수 및 커스텀 변수를 사용하는 방법을 설명합니다. 작업 만들기 및 실행에 대한 자세한 내용은 작업 만들기 및 실행 개요를 참조하세요.
시작하기 전에
- Batch를 사용한 적이 없으면 Batch 시작하기를 검토하고 프로젝트 및 사용자 기본 요건을 완료하여 Batch를 사용 설정하세요.
-
작업을 만드는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.
-
프로젝트에 대한 일괄 작업 편집자(
roles/batch.jobsEditor
) -
기본적으로 기본 Compute Engine 서비스 계정인 작업의 서비스 계정에 대한 서비스 계정 사용자(
roles/iam.serviceAccountUser
)
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
-
프로젝트에 대한 일괄 작업 편집자(
-
작업을 만들 때마다 작업에 유효한 네트워크 구성이 있는지 확인하세요.
- 워크로드 또는 프로젝트에 대한 특정 네트워킹 요구사항이 없고 프로젝트의 기본 네트워크를 수정하지 않은 경우 별도의 조치를 취할 필요가 없습니다.
- 그렇지 않으면 작업을 만들 때 네트워킹을 구성해야 합니다. 네트워킹 요구사항에 맞게 아래 예시를 수정할 수 있도록 기본 작업을 만들기 전에 작업의 네트워킹을 구성하는 방법을 알아봅니다.
-
작업을 만들 때마다 작업에 유효한 VM 운영체제(OS) 환경이 있는지 확인합니다.
- 워크로드 또는 프로젝트에 대해 특정 VM OS 이미지 또는 부팅 디스크 요구사항이 없으면 작업을 수행할 필요가 없습니다.
- 그렇지 않으면 유효한 VM OS 환경 옵션을 준비해야 합니다. 기본 작업을 만들기 전에 VM OS 환경의 기본 구성을 허용하거나 요구사항에 맞게 아래 예시를 수정할 수 있도록 VM OS 환경을 맞춤설정하는 방법을 알아봅니다.
기본 작업 만들기
작업에 지정할 수 있는 모든 필드에 대한 자세한 내용은 참고 문서에서 projects.locations.jobs
REST 리소스를 참조하세요.
간단히 말해서 작업은 작업에 대한 실행 가능한 스크립트 또는 컨테이너에 해당하는 실행 가능 항목을 하나 이상 실행하는 하나 이상의 태스크 배열로 구성되어 있습니다.
기본 사항을 설명하기 위해 이 섹션에서는 스크립트 또는 컨테이너 이미지에 해당하는 실행 가능 항목을 하나만 사용해서 예시 작업을 만드는 방법을 설명합니다.
- Batch를 사용해서 컨테이너 이미지를 실행하는 작업을 작성하려면 컨테이너 작업 만들기를 참조하세요.
- 컨테이너 이미지를 사용할지 여부가 확실하지 않거나 컨테이너에 익숙하지 않은 경우 스크립트 작업을 만드는 것이 좋습니다.
두 유형의 작업 예시 모두 4개의 태스크 배열이 있는 태스크 그룹이 포함되어 있습니다. 각 태스크는 메시지 및 해당 색인을 표준 출력과 Cloud Logging에 출력합니다. 이 작업의 정의는 2개의 동시 로드를 지정하며, 이는 한 번에 2개의 태스크가 실행될 수 있도록 작업을 2개의 VM에서 실행해야 한다는 것을 나타냅니다.
기본 컨테이너 작업 만들기
모든 컴퓨팅 환경에서 실행할 수 있도록 작업에 대해 코드 및 종속 항목을 제공하기 위해 컨테이너 이미지를 선택하거나 만들 수 있습니다. 자세한 내용은 컨테이너 이미지 작업 및 VM 인스턴스에서 컨테이너 실행을 참조하세요.
Google Cloud 콘솔, gcloud CLI, Batch API, Go, Java, Node.js, Python 또는 C++을 사용하여 기본 컨테이너 작업을 만들 수 있습니다.
콘솔
Google Cloud 콘솔을 사용하여 기본 컨테이너 작업을 만들려면 다음을 수행합니다.
Google Cloud 콘솔에서 작업 목록 페이지로 이동합니다.
만들기를 클릭합니다. 일괄 작업 만들기 페이지가 열립니다. 왼쪽 창에서 작업 세부정보 페이지가 선택됩니다.
작업 세부정보 페이지를 구성합니다.
선택사항: 작업 이름 필드에서 작업 이름을 맞춤설정합니다.
예를 들어
example-basic-job
를 입력합니다.태스크 세부정보 섹션을 구성합니다.
새 실행 가능 항목 창에서 이 작업을 실행할 스크립트 또는 컨테이너를 하나 이상 추가합니다.
예를 들어 컨테이너 하나를 추가하려면 다음을 수행합니다.
컨테이너 이미지 URL(기본값)을 선택합니다.
컨테이너 이미지 URL 필드에 이 작업의 각 태스크에서 실행할 컨테이너 이미지의 URL을 입력합니다.
예를 들어
busybox
Docker 컨테이너 이미지를 사용하려면 다음 URL을 입력합니다.gcr.io/google-containers/busybox
선택사항: 컨테이너 이미지의
ENTRYPOINT
명령어를 재정의하려면 진입점 필드에 새 명령어를 입력합니다.예를 들어 다음을 입력합니다.
/bin/sh
선택사항: 컨테이너 이미지의
CMD
명령어를 재정의하려면 다음을 수행합니다.컨테이너 이미지의 CMD 명령어 재정의 체크박스를 선택합니다. 텍스트 상자가 나타납니다.
텍스트 상자에 명령어를 하나 이상 입력하고 각 명령어는 새 줄로 구분합니다.
예를 들어 다음 명령어를 입력합니다.
-c echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks.
완료를 클릭합니다.
태스크 수 필드에 이 작업의 태스크 수를 입력합니다. 이 값은
1
과 태스크 그룹당 태스크 한도 사이의 정수여야 합니다.예를 들어
4
를 입력합니다.동시 실행 필드에 동시에 실행할 작업 수를 입력합니다. 이 수는 총 태스크 수보다 클 수 없으며
1
과 작업당 동시 태스크 한도 사이의 정수여야 합니다.예를 들어
2
를 입력합니다.
리소스 사양 페이지를 구성합니다.
왼쪽 창에서 리소스 사양을 클릭합니다. 리소스 사양 페이지가 열립니다.
VM 프로비저닝 모델 섹션에서 이 작업의 VM에 대한 프로비저닝 모델에 대해 다음 옵션 중 하나를 선택합니다.
작업이 선점을 감내할 수 있고 할인된 가격으로 VM을 사용하려면 Spot을 선택합니다.
그렇지 않으면 표준을 선택합니다.
예를 들어 표준(기본값)을 선택합니다.
이 작업의 위치를 선택합니다.
리전 필드에서 리전을 선택합니다.
예를 들어
us-central1 (Iowa)
(기본값)을 선택합니다.영역 필드에서 다음 중 하나를 수행합니다.
이 작업이 특정 영역에서만 실행되도록 제한하려면 영역을 선택합니다.
그렇지 않으면 모두를 선택합니다.
예를 들어 모두(기본값)를 선택합니다.
다음 머신 계열 중 하나를 선택합니다.
일반적인 워크로드의 경우 범용을 클릭합니다.
성능 집약적인 워크로드의 경우 컴퓨팅 최적화를 클릭합니다.
메모리 집약적인 워크로드의 경우 메모리 최적화를 클릭합니다.
예를 들어 범용(기본값)을 클릭합니다.
계열 필드에서 이 작업의 VM에 대한 머신 시리즈를 선택합니다.
예를 들어 머신 계열에 범용을 선택한 경우 E2(기본값)를 선택합니다.
머신 유형 필드에서 이 작업의 VM에 대한 머신 유형을 선택합니다.
예를 들어 머신 계열에서 E2를 선택한 경우 e2-medium(vCPU 2개, 메모리 4GB)(기본값)을 선택합니다.
각 태스크에 필요한 VM 리소스 양을 구성합니다.
코어 필드에 태스크당 vCPUs 양을 입력합니다.
예를 들어
1
(기본값)을 입력합니다.메모리 필드에 태스크당 GB 단위로 RAM 양을 입력합니다.
예를 들어
0.5
(기본값)을 입력합니다.
선택사항: 작업 구성을 검토하려면 왼쪽 창에서 미리보기를 클릭합니다.
만들기를 클릭합니다.
작업 세부정보 페이지에 자신이 만든 작업이 표시됩니다.
gcloud
gcloud CLI를 사용하여 기본 컨테이너 작업을 만들려면 다음을 수행합니다.
작업의 구성 세부정보를 지정하는 JSON 파일을 만듭니다. 예를 들어 기본 컨테이너 작업을 만들려면 다음 콘텐츠로 JSON 파일을 만듭니다. 작업에 지정할 수 있는 모든 필드에 대한 자세한 내용은 참고 문서에서
projects.locations.jobs
REST 리소스를 참조하세요.{ "taskGroups": [ { "taskSpec": { "runnables": [ { "container": { CONTAINER } } ], "computeResource": { "cpuMilli": CORES, "memoryMib": MEMORY }, "maxRetryCount": MAX_RETRY_COUNT, "maxRunDuration": "MAX_RUN_DURATION" }, "taskCount": TASK_COUNT, "parallelism": PARALLELISM } ] }
다음을 바꿉니다.
CONTAINER
: 각 태스크가 실행되는 컨테이너입니다. 최소한 컨테이너는imageUri
하위 필드에 이미지를 지정해야 하지만 추가 하위 필드가 필요할 수도 있습니다. 자세한 내용은 이 섹션의container
하위 필드 및 컨테이너 작업 예시를 참조하세요.CORES
: 선택사항. 각 태스크에 할당할 milliCPU 단위의 코어(특히 물리적 코어의 절반을 나타내는 vCPUs)의 수입니다.cpuMilli
필드가 지정되지 않은 경우 값은2000
(vCPU 2개)으로 설정됩니다.MEMORY
: 선택사항. 각 태스크에 할당할 메모리 양(MB).memoryMib
필드가 지정되지 않은 경우 값은2000
(2GB)으로 설정됩니다.MAX_RETRY_COUNT
: 선택사항. 태스크의 최대 재시도 횟수입니다. 값은0
에서10
사이의 정수여야 합니다.maxRetryCount
필드가 지정되지 않은 경우 값은0
으로 설정됩니다. 즉, 태스크를 다시 시도하지 않습니다.maxRetryCount
필드에 대한 자세한 내용은 태스크 재시도 자동화를 참조하세요.MAX_RUN_DURATION
: 선택사항. 재시도 또는 실패 전에 태스크가 실행될 수 있는 최대 시간은 뒤에s
가 있는 초 단위의 값으로 형식이 지정됩니다(예: 1시간이면3600s
).maxRunDuration
필드가 지정되지 않은 경우 값은 작업의 최대 실행 시간으로 설정됩니다.maxRunDuration
필드에 대한 자세한 내용은 제한 시간을 사용하여 태스크 및 실행 가능 항목의 실행 시간 제한을 참조하세요.TASK_COUNT
: 선택사항. 작업의 태스크 수. 이 값은1
과 태스크 그룹당 태스크 한도 사이의 정수여야 합니다.taskCount
필드를 지정하지 않으면 값이1
로 설정됩니다.PARALLELISM
: (선택사항) 작업이 동시에 실행하는 태스크 수입니다. 이 수는 태스크 수보다 클 수 없으며1
과 작업당 동시 태스크 한도 사이의 정수여야 합니다.parallelism
필드를 지정하지 않으면 값이1
로 설정됩니다.
gcloud batch jobs submit
명령어를 사용하여 작업을 만듭니다.gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE
다음을 바꿉니다.
JOB_NAME
: 작업의 이름입니다.LOCATION
: 작업의 위치JSON_CONFIGURATION_FILE
: 작업의 구성 세부정보가 포함된 JSON 파일의 경로입니다.
예를 들어 busybox
Docker 컨테이너 이미지를 사용하여 태스크를 실행하는 작업을 만들려면 다음 안내를 따르세요.
현재 디렉터리에 다음 콘텐츠로
hello-world-container.json
이라는 JSON 파일을 만듭니다.{ "taskGroups": [ { "taskSpec": { "runnables": [ { "container": { "imageUri": "gcr.io/google-containers/busybox", "entrypoint": "/bin/sh", "commands": [ "-c", "echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks." ] } } ], "computeResource": { "cpuMilli": 2000, "memoryMib": 16 }, "maxRetryCount": 2, "maxRunDuration": "3600s" }, "taskCount": 4, "parallelism": 2 } ], "allocationPolicy": { "instances": [ { "policy": { "machineType": "e2-standard-4" } } ] }, "labels": { "department": "finance", "env": "testing" }, "logsPolicy": { "destination": "CLOUD_LOGGING" } }
다음 명령어를 실행합니다.
gcloud batch jobs submit example-container-job \ --location us-central1 \ --config hello-world-container.json
API
Batch API를 사용하여 기본 컨테이너 작업을 만들려면 jobs.create
메서드를 사용합니다.
작업에 지정할 수 있는 모든 필드에 대한 자세한 내용은 참고 문서에서 projects.locations.jobs
REST 리소스를 참조하세요.
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"container": {
CONTAINER
}
}
],
"computeResource": {
"cpuMilli": CORES,
"memoryMib": MEMORY
},
"maxRetryCount": MAX_RETRY_COUNT,
"maxRunDuration": "MAX_RUN_DURATION"
},
"taskCount": TASK_COUNT,
"parallelism": PARALLELISM
}
]
}
다음을 바꿉니다.
PROJECT_ID
: 프로젝트의 프로젝트 IDLOCATION
: 작업의 위치JOB_NAME
: 작업의 이름입니다.CONTAINER
: 각 태스크가 실행되는 컨테이너입니다. 최소한 컨테이너는imageUri
하위 필드에 이미지를 지정해야 하지만 추가 하위 필드가 필요할 수도 있습니다. 자세한 내용은 이 섹션의container
하위 필드 및 컨테이너 작업 예시를 참조하세요.CORES
: 선택사항. 각 태스크에 할당할 milliCPU 단위의 코어(특히 물리적 코어의 절반을 나타내는 vCPUs)의 수입니다.cpuMilli
필드가 지정되지 않은 경우 값은2000
(vCPU 2개)으로 설정됩니다.MEMORY
: 선택사항. 각 태스크에 할당할 메모리 양(MB).memoryMib
필드가 지정되지 않은 경우 값은2000
(2GB)으로 설정됩니다.MAX_RETRY_COUNT
: 선택사항. 태스크의 최대 재시도 횟수입니다. 값은0
에서10
사이의 정수여야 합니다.maxRetryCount
필드가 지정되지 않은 경우 값은0
으로 설정됩니다. 즉, 태스크를 다시 시도하지 않습니다.maxRetryCount
필드에 대한 자세한 내용은 태스크 재시도 자동화를 참조하세요.MAX_RUN_DURATION
: 선택사항. 재시도 또는 실패 전에 태스크가 실행될 수 있는 최대 시간은 뒤에s
가 있는 초 단위의 값으로 형식이 지정됩니다(예: 1시간이면3600s
).maxRunDuration
필드가 지정되지 않은 경우 값은 작업의 최대 실행 시간으로 설정됩니다.maxRunDuration
필드에 대한 자세한 내용은 제한 시간을 사용하여 태스크 및 실행 가능 항목의 실행 시간 제한을 참조하세요.TASK_COUNT
: 선택사항. 작업의 태스크 수.1
에서 태스크 그룹당 태스크 한도 사이의 정수여야 합니다.taskCount
필드를 지정하지 않으면 값이1
로 설정됩니다.PARALLELISM
: (선택사항) 작업이 동시에 실행하는 태스크 수. 이 수는 태스크 수보다 클 수 없으며1
과 작업당 동시 태스크 한도 사이의 정수여야 합니다.parallelism
필드를 지정하지 않으면 값이1
로 설정됩니다.
예를 들어 busybox
Docker 컨테이너 이미지를 사용하여 태스크를 실행하는 작업을 만들려면 다음 요청을 사용합니다.
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/jobs?job_id=example-container-job
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"container": {
"imageUri": "gcr.io/google-containers/busybox",
"entrypoint": "/bin/sh",
"commands": [
"-c",
"echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks."
]
}
}
],
"computeResource": {
"cpuMilli": 2000,
"memoryMib": 16
},
"maxRetryCount": 2,
"maxRunDuration": "3600s"
},
"taskCount": 4,
"parallelism": 2
}
],
"allocationPolicy": {
"instances": [
{
"policy": { "machineType": "e2-standard-4" }
}
]
},
"labels": {
"department": "finance",
"env": "testing"
},
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
여기서 PROJECT_ID
는 프로젝트의 프로젝트 ID입니다.
Go
Go
자세한 내용은 Batch Go API 참고 문서를 확인하세요.
Batch에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
자바
Java
자세한 내용은 Batch Java API 참고 문서를 확인하세요.
Batch에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Node.js
Node.js
자세한 내용은 Batch Node.js API 참고 문서를 확인하세요.
Batch에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Python
Python
자세한 내용은 Batch Python API 참고 문서를 확인하세요.
Batch에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
C++
C++
자세한 내용은 Batch C++ API 참고 문서를 확인하세요.
Batch에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
기본 스크립트 작업 만들기
Google Cloud 콘솔, gcloud CLI, Batch API, Go, Java, Node.js, Python 또는 C++을 사용하여 기본 스크립트 작업을 만들 수 있습니다.
콘솔
Google Cloud 콘솔을 사용하여 기본 스크립트 작업을 만들려면 다음을 수행합니다.
Google Cloud 콘솔에서 작업 목록 페이지로 이동합니다.
만들기를 클릭합니다. 일괄 작업 만들기 페이지가 열립니다. 왼쪽 창에서 작업 세부정보 페이지가 선택됩니다.
작업 세부정보 페이지를 구성합니다.
선택사항: 작업 이름 필드에서 작업 이름을 맞춤설정합니다.
예를 들어
example-basic-job
를 입력합니다.태스크 세부정보 섹션을 구성합니다.
새 실행 가능 항목 창에서 이 작업을 실행할 스크립트 또는 컨테이너를 하나 이상 추가합니다.
예를 들어 스크립트 하나를 추가하려면 다음을 수행합니다.
스크립트를 선택합니다. 텍스트 상자가 나타납니다.
텍스트 상자에 이 작업의 각 태스크에 대해 실행할 스크립트를 입력합니다.
예를 들어 다음 스크립트를 입력합니다.
echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks.
완료를 클릭합니다.
태스크 수 필드에 이 작업의 태스크 수를 입력합니다. 이 값은
1
과 태스크 그룹당 태스크 한도 사이의 정수여야 합니다.예를 들어
4
를 입력합니다.동시 실행 필드에 동시에 실행할 작업 수를 입력합니다. 이 수는 총 태스크 수보다 클 수 없으며
1
과 작업당 동시 태스크 한도 사이의 정수여야 합니다.예를 들어
2
를 입력합니다.
리소스 사양 페이지를 구성합니다.
왼쪽 창에서 리소스 사양을 클릭합니다. 리소스 사양 페이지가 열립니다.
VM 프로비저닝 모델 섹션에서 이 작업의 VM에 대한 프로비저닝 모델에 대해 다음 옵션 중 하나를 선택합니다.
작업이 선점을 감내할 수 있고 할인된 가격으로 VM을 사용하려면 Spot을 선택합니다.
그렇지 않으면 표준을 선택합니다.
예를 들어 표준(기본값)을 선택합니다.
이 작업의 위치를 선택합니다.
리전 필드에서 리전을 선택합니다.
예를 들어
us-central1 (Iowa)
(기본값)을 선택합니다.영역 필드에서 다음 중 하나를 수행합니다.
이 작업이 특정 영역에서만 실행되도록 제한하려면 영역을 선택합니다.
그렇지 않으면 모두를 선택합니다.
예를 들어 모두(기본값)를 선택합니다.
다음 머신 계열 중 하나를 선택합니다.
일반적인 워크로드의 경우 범용을 클릭합니다.
성능 집약적인 워크로드의 경우 컴퓨팅 최적화를 클릭합니다.
메모리 집약적인 워크로드의 경우 메모리 최적화를 클릭합니다.
예를 들어 범용(기본값)을 클릭합니다.
계열 필드에서 이 작업의 VM에 대한 머신 시리즈를 선택합니다.
예를 들어 머신 계열에 범용을 선택한 경우 E2(기본값)를 선택합니다.
머신 유형 필드에서 이 작업의 VM에 대한 머신 유형을 선택합니다.
예를 들어 머신 계열에서 E2를 선택한 경우 e2-medium(vCPU 2개, 메모리 4GB)(기본값)을 선택합니다.
각 태스크에 필요한 VM 리소스 양을 구성합니다.
코어 필드에 태스크당 vCPUs 양을 입력합니다.
예를 들어
1
(기본값)을 입력합니다.메모리 필드에 태스크당 GB 단위로 RAM 양을 입력합니다.
예를 들어
0.5
(기본값)을 입력합니다.
선택사항: 작업 구성을 검토하려면 왼쪽 창에서 미리보기를 클릭합니다.
만들기를 클릭합니다.
작업 세부정보 페이지에 자신이 만든 작업이 표시됩니다.
gcloud
gcloud CLI를 사용하여 기본 스크립트 작업을 만들려면 다음을 수행합니다.
작업의 구성 세부정보를 지정하는 JSON 파일을 만듭니다. 예를 들어 기본 스크립트 작업을 만들려면 다음 콘텐츠로 JSON 파일을 만듭니다. 작업에 지정할 수 있는 모든 필드에 대한 자세한 내용은 참고 문서에서
projects.locations.jobs
REST 리소스를 참조하세요.{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { SCRIPT } } ], "computeResource": { "cpuMilli": CORES, "memoryMib": MEMORY }, "maxRetryCount": MAX_RETRY_COUNT, "maxRunDuration": "MAX_RUN_DURATION" }, "taskCount": TASK_COUNT, "parallelism": PARALLELISM } ] }
다음을 바꿉니다.
SCRIPT
: 각 태스크가 실행하는 스크립트. 스크립트는text
하위 필드를 사용하는 텍스트 또는file
하위 필드를 사용하여 액세스 가능한 파일의 경로로 정의되어야 합니다. 자세한 내용은 이 섹션의script
하위 필드 및 스크립트 작업 예시를 참조하세요.CORES
: 선택사항. 각 태스크에 할당할 milliCPU 단위의 코어(특히 물리적 코어의 절반을 나타내는 vCPUs)의 수입니다.cpuMilli
필드가 지정되지 않은 경우 값은2000
(vCPU 2개)으로 설정됩니다.MEMORY
: 선택사항. 각 태스크에 할당할 메모리 양(MB).memoryMib
필드가 지정되지 않은 경우 값은2000
(2GB)으로 설정됩니다.MAX_RETRY_COUNT
: 선택사항. 태스크의 최대 재시도 횟수입니다. 값은0
에서10
사이의 정수여야 합니다.maxRetryCount
필드가 지정되지 않은 경우 값은0
으로 설정됩니다. 즉, 태스크를 다시 시도하지 않습니다.maxRetryCount
필드에 대한 자세한 내용은 태스크 재시도 자동화를 참조하세요.MAX_RUN_DURATION
: 선택사항. 재시도 또는 실패 전에 태스크가 실행될 수 있는 최대 시간은 뒤에s
가 있는 초 단위의 값으로 형식이 지정됩니다(예: 1시간이면3600s
).maxRunDuration
필드가 지정되지 않은 경우 값은 작업의 최대 실행 시간으로 설정됩니다.maxRunDuration
필드에 대한 자세한 내용은 제한 시간을 사용하여 태스크 및 실행 가능 항목의 실행 시간 제한을 참조하세요.TASK_COUNT
: 선택사항. 작업의 태스크 수. 이 값은1
과 태스크 그룹당 태스크 한도 사이의 정수여야 합니다.taskCount
필드를 지정하지 않으면 값이1
로 설정됩니다.PARALLELISM
: (선택사항) 작업이 동시에 실행하는 태스크 수입니다. 이 수는 태스크 수보다 클 수 없으며1
과 작업당 동시 태스크 한도 사이의 정수여야 합니다.parallelism
필드를 지정하지 않으면 값이1
로 설정됩니다.
gcloud batch jobs submit
명령어를 사용하여 작업을 만듭니다.gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE
다음을 바꿉니다.
JOB_NAME
: 작업의 이름입니다.LOCATION
: 작업의 위치JSON_CONFIGURATION_FILE
: 작업의 구성 세부정보가 포함된 JSON 파일의 경로입니다.
예를 들어 스크립트를 사용하여 태스크를 실행하는 작업을 만들려면 다음을 사용하세요.
현재 디렉터리에 다음 콘텐츠로
hello-world-script.json
이라는 JSON 파일을 만듭니다.{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks." } } ], "computeResource": { "cpuMilli": 2000, "memoryMib": 16 }, "maxRetryCount": 2, "maxRunDuration": "3600s" }, "taskCount": 4, "parallelism": 2 } ], "allocationPolicy": { "instances": [ { "policy": { "machineType": "e2-standard-4" } } ] }, "labels": { "department": "finance", "env": "testing" }, "logsPolicy": { "destination": "CLOUD_LOGGING" } }
다음 명령어를 실행합니다.
gcloud batch jobs submit example-script-job \ --location us-central1 \ --config hello-world-script.json
API
Batch API를 사용하여 기본 스크립트 작업을 만들려면 jobs.create
메서드를 사용합니다.
작업에 지정할 수 있는 모든 필드에 대한 자세한 내용은 참고 문서에서 projects.locations.jobs
REST 리소스를 참조하세요.
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
SCRIPT
}
}
],
"computeResource": {
"cpuMilli": CORES,
"memoryMib": MEMORY
},
"maxRetryCount": MAX_RETRY_COUNT,
"maxRunDuration": "MAX_RUN_DURATION"
},
"taskCount": TASK_COUNT,
"parallelism": PARALLELISM
}
]
}
다음을 바꿉니다.
PROJECT_ID
: 프로젝트의 프로젝트 IDLOCATION
: 작업의 위치JOB_NAME
: 작업의 이름입니다.SCRIPT
: 각 태스크가 실행하는 스크립트. 스크립트는text
하위 필드를 사용하는 텍스트 또는file
하위 필드를 사용하여 액세스 가능한 파일의 경로로 정의되어야 합니다. 자세한 내용은 이 섹션의script
하위 필드 및 스크립트 작업 예시를 참조하세요.CORES
: 선택사항. 각 태스크에 할당할 milliCPU 단위의 코어(특히 물리적 코어의 절반을 나타내는 vCPUs)의 수입니다.cpuMilli
필드가 지정되지 않은 경우 값은2000
(vCPU 2개)으로 설정됩니다.MEMORY
: 선택사항. 각 태스크에 할당할 메모리 양(MB).memoryMib
필드가 지정되지 않은 경우 값은2000
(2GB)으로 설정됩니다.MAX_RETRY_COUNT
: 선택사항. 태스크의 최대 재시도 횟수입니다. 값은0
에서10
사이의 정수여야 합니다.maxRetryCount
필드가 지정되지 않은 경우 값은0
으로 설정됩니다. 즉, 태스크를 다시 시도하지 않습니다.maxRetryCount
필드에 대한 자세한 내용은 태스크 재시도 자동화를 참조하세요.MAX_RUN_DURATION
: 선택사항. 재시도 또는 실패 전에 태스크가 실행될 수 있는 최대 시간은 뒤에s
가 있는 초 단위의 값으로 형식이 지정됩니다(예: 1시간이면3600s
).maxRunDuration
필드가 지정되지 않은 경우 값은 작업의 최대 실행 시간으로 설정됩니다.maxRunDuration
필드에 대한 자세한 내용은 제한 시간을 사용하여 태스크 및 실행 가능 항목의 실행 시간 제한을 참조하세요.TASK_COUNT
: 선택사항. 작업의 태스크 수. 이 값은1
과 태스크 그룹당 태스크 한도 사이의 정수여야 합니다.taskCount
필드를 지정하지 않으면 값이1
로 설정됩니다.PARALLELISM
: (선택사항) 작업이 동시에 실행하는 태스크 수. 이 수는 태스크 수보다 클 수 없으며1
과 작업당 동시 태스크 한도 사이의 정수여야 합니다.parallelism
필드를 지정하지 않으면 값이1
로 설정됩니다.
예를 들어 스크립트를 사용하여 태스크를 실행하는 작업을 만들려면 다음 요청을 사용하세요.
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/jobs?job_id=example-script-job
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks."
}
}
],
"computeResource": {
"cpuMilli": 2000,
"memoryMib": 16
},
"maxRetryCount": 2,
"maxRunDuration": "3600s"
},
"taskCount": 4,
"parallelism": 2
}
],
"allocationPolicy": {
"instances": [
{
"policy": { "machineType": "e2-standard-4" }
}
]
},
"labels": {
"department": "finance",
"env": "testing"
},
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
여기서 PROJECT_ID
는 프로젝트의 프로젝트 ID입니다.
Go
Go
자세한 내용은 Batch Go API 참고 문서를 확인하세요.
Batch에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
자바
Java
자세한 내용은 Batch Java API 참고 문서를 확인하세요.
Batch에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Node.js
Node.js
자세한 내용은 Batch Node.js API 참고 문서를 확인하세요.
Batch에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Python
Python
자세한 내용은 Batch Python API 참고 문서를 확인하세요.
Batch에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
C++
C++
자세한 내용은 Batch C++ API 참고 문서를 확인하세요.
Batch에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
환경 변수 사용
작업에서 실행할 컨테이너 이미지 또는 스크립트를 작성할 때 환경 변수를 사용합니다. 모든 일괄 작업에 대해 사전 정의된 환경 변수와 작업을 만들 때 정의하는 커스텀 환경 변수를 사용할 수 있습니다.
사전 정의된 환경 변수 사용
기본적으로 작업의 실행 가능한 항목은 사전 정의된 다음 환경 변수를 사용할 수 있습니다.
BATCH_TASK_COUNT
: 이 태스크 그룹의 총 태스크 수입니다.BATCH_TASK_INDEX
: 태스크 그룹에 있는 이 태스크의 색인 번호입니다. 첫 번째 태스크의 색인은0
이며 태스크를 추가할 때마다 증가합니다.BATCH_HOSTS_FILE
: 이 태스크 그룹에서 실행 중인 모든 VM 인스턴스가 나열된 파일의 경로입니다. 이 환경 변수를 사용하려면requireHostsFile
필드를true
로 설정해야 합니다.BATCH_TASK_RETRY_ATTEMPT
: 이 태스크가 이미 시도된 횟수입니다. 값은 태스크 첫 시도 중0
이며 이후 재시도할 때마다 증가합니다. 태스크에 허용되는 총 재시도 횟수는maxRetryCount
필드 값에 따라 결정되며, 정의되지 않은 경우0
입니다. 재시도에 대한 자세한 내용은 태스크 재시도 자동화를 참조하세요.
사전 정의된 환경 변수를 사용하는 방법의 예시는 이 문서에서 기본 작업 만들기에 있는 이전 실행 가능 항목 예시를 참조하세요.
커스텀 환경 변수 정의 및 사용
원하는 경우 작업에서 커스텀 환경 변수 하나 이상을 정의할 수 있습니다.
원하는 데이터 범위를 기준으로 특정 환경에서 각 변수를 정의합니다.
모든 태스크의 값이 같은 변수의 경우 다음 중 하나를 사용합니다.
변수의 모든 실행 가능 항목 값이 같으면 모든 실행 가능 항목의 환경(
taskSpec
의environment
하위 필드)을 사용합니다.그렇지 않으면 변수의 모든 실행 가능 항목에 별도의 값이 있으면 특정 실행 가능 항목 환경(
environment
하위 필드runnables[]
)을 하나 이상을 사용합니다.
그렇지 않은 경우 태스크마다 별도의 값이 있는 배열 변수의 경우 모든 태스크 환경(
taskEnvironment
)을 반환합니다.
선택한 환경에서 다음 환경 하위 필드 중 하나를 사용하여 각 변수의 이름과 값을 정의합니다.
작업 구성 JSON 파일에서 변수를 직접 정의하려면 이 섹션에 표시된 것처럼 표준 변수(
variables
) 하위 필드를 사용합니다. 이 옵션을 암호화하지 않으려는 데이터에 사용하는 것이 좋습니다.암호화된 데이터를 사용하여 변수를 정의하려면 Secret Manager 또는 Cloud Key Management Service를 사용하면 됩니다.
기존 Secret Manager 보안 비밀의 암호화된 콘텐츠를 사용하려면 보안 비밀 변수(
secretVariables
) 하위 필드를 사용합니다. 작업에서 보안 비밀을 사용하는 방법에 대한 자세한 내용은 Secret Manager를 사용하여 민감한 정보 보호를 참조하세요.기존 Cloud Key Management Service 키의 암호화된 콘텐츠를 사용하려면 암호화된 변수(
encryptedVariables
) 하위 필드를 사용합니다. Cloud KMS 키에 대한 자세한 내용은 Cloud Key Management Service 문서를 참조하세요.
gcloud CLI 또는 Batch API를 사용하여 작업의 커스텀 환경 변수를 정의하고 사용할 수 있습니다. 다음 예시에서는 표준 변수를 정의하고 사용하는 작업 두 개를 만드는 방법을 설명합니다. 첫 번째 예시 작업에는 특정 실행 가능 항목의 변수가 있습니다. 두 번째 예시 작업에는 태스크마다 값이 다른 배열 변수가 있습니다.
gcloud
각 태스크가 실행하는 실행 가능한 항목에 환경 변수를 전달하는 작업을 정의하려면 실행 가능한 항목에 환경 변수 정의 및 사용 방법에 대한 예시를 참조하세요. 그렇지 않고 태스크 색인에 따라 환경 변수 목록을 다른 작업에 전달하는 작업을 정의하려면 각 태스크의 환경 변수 정의 및 사용 방법에 대한 예시를 참조하세요.
실행 가능한 항목을 위한 환경 변수 정의 및 사용
gcloud CLI를 사용하여 실행 가능한 항목에 환경 변수를 전달하는 작업을 만들려면 gcloud batch jobs submit
명령어를 사용하여 작업 구성 파일에 환경 변수를 지정합니다.
예를 들어 환경 변수를 정의하고 이를 3개 태스크의 스크립트로 전달하는 스크립트 작업을 만들려면 다음 요청을 수행합니다.
현재 디렉터리에 다음 콘텐츠로
hello-world-environment-variables.json
이라는 JSON 파일을 만듭니다.{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello ${VARIABLE_NAME}! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks." }, "environment": { "variables": { "VARIABLE_NAME": "VARIABLE_VALUE" } } } ], "computeResource": { "cpuMilli": 2000, "memoryMib": 16 } }, "taskCount": 3, "parallelism": 1 } ], "allocationPolicy": { "instances": [ { "policy": { "machineType": "e2-standard-4" } } ] } }
다음을 바꿉니다.
다음 명령어를 실행합니다.
gcloud batch jobs submit example-environment-variables-job \ --location us-central1 \ --config hello-world-environment-variables.json
각 태스크에 대한 환경 변수 정의 및 사용
gcloud CLI를 사용하여 태스크 색인 기준 태스크에 환경 변수를 전달하는 작업을 만들려면 gcloud batch jobs submit
명령어를 사용하고 작업의 구성 파일에 taskEnvironments
배열을 지정합니다.
예를 들어 이름이 같고 값이 다른 3개의 환경 변수 배열을 포함하고 환경 변수를 배열의 색인과 일치하는 태스크의 스크립트에 전달하는 작업을 만들려면 다음을 수행합니다.
현재 디렉터리에 다음 콘텐츠로
hello-world-task-environment-variables.json
이라는 JSON 파일을 만듭니다.{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello ${TASK_VARIABLE_NAME}! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks." }, } ], "computeResource": { "cpuMilli": 2000, "memoryMib": 16 } }, "taskCount": 3, "taskEnvironments": [ { "variables": { "TASK_VARIABLE_NAME": "TASK_VARIABLE_VALUE_0" } }, { "variables": { "TASK_VARIABLE_NAME": "TASK_VARIABLE_VALUE_1" } }, { "variables": { "TASK_VARIABLE_NAME": "TASK_VARIABLE_VALUE_2" } } ] } ], "allocationPolicy": { "instances": [ { "policy": { "machineType": "e2-standard-4" } } ] } }
다음을 바꿉니다.
TASK_VARIABLE_NAME
: 일치하는 색인이 있는 태스크에 전달되는 태스크 환경 변수의 이름입니다. 규칙에 따라 환경 변수 이름은 대문자로 표시됩니다.TASK_VARIABLE_VALUE_0
: 첫 번째 태스크에 전달된 환경 변수의 값이며BATCH_TASK_INDEX
는0
과 동일합니다.TASK_VARIABLE_VALUE_1
: 두 번째 태스크에 전달된 환경 변수의 값이며BATCH_TASK_INDEX
는1
과 동일합니다.TASK_VARIABLE_VALUE_2
: 세 번째 태스크에 전달된 환경 변수의 값이며BATCH_TASK_INDEX
는2
와 동일합니다.
다음 명령어를 실행합니다.
gcloud batch jobs submit example-task-environment-variables-job \ --location us-central1 \ --config hello-world-task-environment-variables.json
API
각 태스크가 실행하는 실행 가능한 항목에 환경 변수를 전달하는 작업을 정의하려면 실행 가능한 항목에 환경 변수 정의 및 사용 방법에 대한 예시를 참조하세요. 그렇지 않고 태스크 색인에 따라 환경 변수 목록을 다른 작업에 전달하는 작업을 정의하려면 각 태스크의 환경 변수 정의 및 사용 방법에 대한 예시를 참조하세요.
실행 가능한 항목을 위한 환경 변수 정의 및 사용
Batch API를 사용하여 실행 가능한 항목에 환경 변수를 전달하는 작업을 만들려면 gcloud batch jobs submit
명령어를 사용하고 environment
필드에 환경 변수를 지정합니다.
예를 들어 환경 변수를 포함하고 이를 3개 태스크의 스크립트로 전달하는 작업을 만들려면 다음 요청을 수행합니다.
POST https://batch.googleapis.com/v1/projects/<var>PROJECT_ID</var>/locations/us-central1/jobs?job_id=example-environment-variables-job
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello ${VARIABLE_NAME}! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks."
},
"environment": {
"variables": {
"VARIABLE_NAME": "VARIABLE_VALUE"
}
}
}
],
"computeResource": {
"cpuMilli": 2000,
"memoryMib": 16
}
},
"taskCount": 3,
"parallelism": 1
}
],
"allocationPolicy": {
"instances": [
{
"policy": {
"machineType": "e2-standard-4"
}
}
]
}
}
다음을 바꿉니다.
PROJECT_ID
: 프로젝트의 프로젝트 IDVARIABLE_NAME
: 각 태스크에 전달되는 환경 변수의 이름. 규칙에 따라 환경 변수 이름은 대문자로 표시됩니다.VARIABLE_VALUE
: 각 태스크에 전달된 환경 변수의 값
각 태스크에 대한 환경 변수 정의 및 사용
Batch API를 사용하여 태스크 색인을 기반으로 태스크에 환경 변수를 전달하는 작업을 만들려면 jobs.create
메서드를 사용하고 taskEnvironments
배열 필드에 환경 변수를 지정합니다.
예를 들어 이름이 같고 값이 다른 3개의 환경 변수 배열을 포함하는 작업을 만들고 환경 변수를 색인에 따라 3개의 태스크의 스크립트에 전달하려면 다음을 요청합니다.
POST https://batch.googleapis.com/v1/projects/<var>PROJECT_ID</var>/locations/us-central1/jobs?job_id=example-task-environment-variables-job
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello ${TASK_VARIABLE_NAME}! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks."
},
}
],
"computeResource": {
"cpuMilli": 2000,
"memoryMib": 16
}
},
"taskCount": 3,
"taskEnvironments": [
{
"variables": {
"TASK_VARIABLE_NAME": "TASK_VARIABLE_VALUE_0"
}
},
{
"variables": {
"TASK_VARIABLE_NAME": "TASK_VARIABLE_VALUE_1"
}
},
{
"variables": {
"TASK_VARIABLE_NAME": "TASK_VARIABLE_VALUE_2"
}
}
]
}
],
"allocationPolicy": {
"instances": [
{
"policy": { "machineType": "e2-standard-4" }
}
]
}
}
다음을 바꿉니다.
PROJECT_ID
: 프로젝트의 프로젝트 IDTASK_VARIABLE_NAME
: 일치하는 색인이 있는 태스크에 전달된 환경 변수의 이름. 규칙에 따라 환경 변수 이름은 대문자로 표시됩니다.TASK_VARIABLE_VALUE_0
: 첫 번째 태스크에 전달된 환경 변수의 값이며BATCH_TASK_INDEX
는0
과 동일합니다.TASK_VARIABLE_VALUE_1
: 두 번째 태스크에 전달된 환경 변수의 값이며BATCH_TASK_INDEX
는1
과 동일합니다.TASK_VARIABLE_VALUE_2
: 세 번째 태스크에 전달된 환경 변수의 값이며BATCH_TASK_INDEX
는2
와 동일합니다.
다음 단계
- 작업을 만들거나 실행하는 데 문제가 있는 경우 문제 해결을 참조하기
- 작업 및 태스크 보기
- 작업 만들기 옵션 자세히 알아보기