이 문서에서는 라벨을 사용하여 Batch 리소스를 구성하는 방법을 설명합니다.
라벨은 리소스를 그룹화하고 설명하기 위해 적용되는 키-값 쌍입니다. Batch에는 리소스에 자동으로 적용되는 사전 정의된 라벨과 작업을 만들 때 정의하고 적용할 수 있는 커스텀 라벨이 있습니다.
라벨을 사용하면 리소스 목록 및 Cloud Billing 보고서의 결과를 필터링할 수 있습니다. 예를 들어 라벨을 사용하여 다음을 수행할 수 있습니다.
- 프로젝트의 작업 목록을 명확하게 정리하고 구성합니다. 
- 라벨을 사용하여 지정한 컨테이너 또는 스크립트 유형을 설명하여 작업의 실행 가능 항목을 구분합니다. 
- Batch 또는 특정 작업으로 만든 리소스에 대한 Cloud Billing 보고서를 필터링하여 비용을 분석합니다. 
라벨에 대한 자세한 내용은 라벨에 대한 Compute Engine 문서를 참조하세요.
시작하기 전에
- Batch를 사용한 적이 없으면 Batch 시작하기를 검토하고 프로젝트 및 사용자 기본 요건을 완료하여 Batch를 사용 설정하세요.
- 
  
  
  
  
  
  
  
    
    
    
    
    
    
      
      
        
        
        
        
        
      
    
      
      
        
        
        
        
        
      
    
    
    
    
    
  
  작업을 만드는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요. - 
  
  
    
      프로젝트에 대한 일괄 작업 편집자  (roles/batch.jobsEditor)
- 
  
  
    
      서비스 계정 사용자  (roles/iam.serviceAccountUser) 기본적으로 기본 Compute Engine 서비스 계정인 작업의 서비스 계정
 역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요. 
- 
  
  
    
      프로젝트에 대한 일괄 작업 편집자  (
제한사항
Compute Engine 문서에 지정된 라벨 요구사항 외에도 Batch 작업 및 리소스에 라벨을 적용하면 다음과 같은 제한사항이 있습니다.
- Batch는 Batch를 사용하여 만든 다음 유형의 리소스에 대한 라벨만 지원합니다. - 작업 
- 실행 가능 항목 
- 작업의 그래픽 처리 장치(GPU)(있는 경우) 
- 작업의 가상 머신(VM) 인스턴스 
 
- Batch는 작업에 자동으로 적용하는 사전 정의된 라벨을 고려한 후 다음과 같은 양의 커스텀 라벨을 정의할 수 있습니다. - 작업 및 실행 가능 항목에 적용할 커스텀 라벨을 최대 63개까지 정의할 수 있습니다. 
- 작업을 위해 만든 각 GPU, 영구 디스크, VM에 적용할 커스텀 라벨을 최대 61개까지 정의할 수 있습니다. 
 
- Batch는 고유한 이름의 커스텀 라벨 정의만 지원합니다. 이로 인한 결과는 다음과 같습니다. - 사전 정의된 라벨을 재정의하려고 시도하면 오류가 발생합니다. 
- 중복 커스텀 라벨을 정의하면 기존 커스텀 라벨이 재정의됩니다. 
 
- Batch는 작업을 만들 때 라벨 정의만 지원합니다. - 작업 및 실행 가능 항목의 라벨을 추가, 업데이트, 삭제할 수 없습니다. 
- Compute Engine을 사용하여 작업에 만든 영구 디스크 및 VM의 라벨을 추가, 업데이트, 삭제할 수 있지만 권장되지 않습니다. 작업 리소스가 존재하는 기간이 안정적으로 예측될 수 없으며 Batch에서 변경사항이 제대로 작동하지 않을 수 있습니다. 
 
- 라벨을 사용하여 작업 목록을 필터링하려면 gcloud CLI 또는 Batch API를 사용하여 작업 목록을 확인해야 합니다. 
사전 정의된 라벨
사전 정의된 각 라벨에는 batch- 프리픽스로 시작하는 키가 있습니다. 기본적으로 Batch는 다음과 같은 사전 정의된 라벨을 자동으로 적용합니다.
- 만드는 각 작업에 다음이 적용됩니다. - batch-job-id: 이 라벨의 값은 작업 이름으로 설정됩니다.
 
- 작업을 위해 만든 각 GPU, 영구 디스크, VM에 다음이 적용됩니다. - batch-job-id: 이 라벨의 값은 작업 이름으로 설정됩니다.
- batch-job-uid: 이 라벨의 값은 작업의 고유 식별자(UID)로 설정됩니다.
- batch-node: 이 라벨의 값은 null입니다. 단순히 작업을 위해 만든 모든 GPU, 영구 디스크, VM을 그룹화합니다. 예를 들어 Cloud Billing 보고서를 볼 때 이 라벨을 사용하여 Batch에서 만든 모든 GPU, 영구 디스크, VM의 비용을 확인합니다.
 
커스텀 라벨 정의
작업을 만들 때 선택적으로 하나 이상의 커스텀 라벨을 정의할 수 있습니다. 프로젝트에서 이미 사용하는 새 키 또는 키로 커스텀 라벨을 정의할 수 있습니다. 커스텀 라벨을 정의하려면 라벨의 용도에 따라 이 문서에서 다음 방법 중 하나 이상을 선택합니다.
- 
이 섹션에서는 하나 이상의 커스텀 라벨을 작업과 작업용으로 만든 각 GPU, 영구 디스크, VM에 적용하는 방법을 설명합니다. 작업을 만든 후 이러한 라벨을 사용하여 Cloud Billing 보고서와 프로젝트의 작업 목록, 영구 디스크, VM을 필터링할 수 있습니다. 
- 
이 섹션에서는 작업에 하나 이상의 커스텀 라벨을 적용하는 방법을 설명합니다. 작업을 만든 후 이러한 라벨을 사용하여 프로젝트의 작업 목록을 필터링할 수 있습니다. 
- 
이 섹션에서는 작업에 대한 하나 이상의 실행 가능 항목에 하나 이상의 커스텀 라벨을 적용하는 방법을 설명합니다. 작업을 만든 후 이러한 라벨을 사용하여 프로젝트의 작업 목록을 필터링할 수 있습니다. 
작업 및 해당 리소스의 커스텀 라벨 정의
작업의 할당 정책을 위해 labels 필드에 정의된 라벨은 작업뿐만 아니라 각 GPU(있는 경우), 영구 디스크(모든 부팅 디스크 및 새 스토리지 볼륨), 작업을 위해 만든 VM에도 적용됩니다.
작업을 만들 때 gcloud CLI 또는 Batch API를 사용하여 작업 및 해당 리소스의 라벨을 정의할 수 있습니다.
gcloud
예를 들어 us-central1에서 작업에 적용되는 두 개의 커스텀 라벨과 작업에 생성된 리소스를 정의하는 기본 컨테이너 작업을 만들려면 다음 단계를 수행합니다.
- 작업의 구성 세부정보와 - allocationPolicy.labels필드를 지정하는 JSON 파일을 만듭니다.- { "allocationPolicy": { "instances": [ { "policy": { "machineType": "e2-standard-4" } } ], "labels": { "VM_LABEL_NAME1": "VM_LABEL_VALUE1", "VM_LABEL_NAME2": "VM_LABEL_VALUE2" } }, "taskGroups": [ { "taskSpec": { "runnables": [ { "container": { "imageUri": "gcr.io/google-containers/busybox", "entrypoint": "/bin/sh", "commands": [ "-c", "echo Hello world!" ] } } ] } } ] }- 다음을 바꿉니다. - VM_LABEL_NAME1: 작업용으로 만든 VM에 적용할 첫 번째 라벨의 이름
- VM_LABEL_VALUE1: 작업용으로 만든 VM에 적용할 첫 번째 라벨의 값
- VM_LABEL_NAME2: 작업용으로 만든 VM에 적용할 두 번째 라벨의 이름
- VM_LABEL_VALUE2: 작업용으로 만든 VM에 적용할 두 번째 라벨의 값
 
- gcloud batch jobs submit명령어를 사용하여- us-central1에서 작업을 만듭니다.- gcloud batch jobs submit example-job \ --config=JSON_CONFIGURATION_FILE \ --location=us-central1- JSON_CONFIGURATION_FILE을 이전 단계에서 만든 작업의 구성 세부정보가 있는 JSON 파일의 경로로 바꿉니다.
API
예를 들어 us-central1에서 작업과 작업용으로 만든 리소스에 적용되는 두 개의 커스텀 라벨을 정의하는 기본 컨테이너 작업을 만들려면 jobs.create 메서드에 대한 POST 요청을 수행하고 allocationPolicy.labels 필드를 지정합니다.
POST https://batch.googleapis.com/v1/projects/example-project/locations/us-central1/jobs?job_id=example-job
{
  "allocationPolicy": {
    "instances": [
      {
        "policy": {
          "machineType": "e2-standard-4"
        }
      }
    ],
    "labels": {
      "VM_LABEL_NAME1": "VM_LABEL_VALUE1",
      "VM_LABEL_NAME2": "VM_LABEL_VALUE2"
    }
  },
  "taskGroups": [
    {
      "taskSpec": {
        "runnables": [
          {
            "container": {
              "imageUri": "gcr.io/google-containers/busybox",
              "entrypoint": "/bin/sh",
              "commands": [
                "-c",
                "echo Hello world!"
              ]
            }
          }
        ]
      }
    }
  ]
}
다음을 바꿉니다.
- VM_LABEL_NAME1: 작업용으로 만든 VM에 적용할 첫 번째 라벨의 이름
- VM_LABEL_VALUE1: 작업용으로 만든 VM에 적용할 첫 번째 라벨의 값
- VM_LABEL_NAME2: 작업용으로 만든 VM에 적용할 두 번째 라벨의 이름
- VM_LABEL_VALUE2: 작업용으로 만든 VM에 적용할 두 번째 라벨의 값
자바
Node.js
Python
작업의 커스텀 라벨 정의
작업의 labels 필드에 정의된 라벨은 작업에만 적용됩니다.
gcloud CLI 또는 Batch API를 사용하여 작업을 만들 때 작업 라벨을 정의할 수 있습니다.
gcloud
예를 들어 us-central1에서 작업 자체에 적용되는 두 개의 커스텀 라벨을 정의하는 기본 컨테이너 작업을 만들려면 다음 단계를 따르세요.
- 작업의 구성 세부정보와 - labels필드를 지정하는 JSON 파일을 만듭니다.- { "taskGroups": [ { "taskSpec": { "runnables": [ { "container": { "imageUri": "gcr.io/google-containers/busybox", "entrypoint": "/bin/sh", "commands": [ "-c", "echo Hello World!" ] } } ] } } ], "labels": { "JOB_LABEL_NAME1": "JOB_LABEL_VALUE1", "JOB_LABEL_NAME2": "JOB_LABEL_VALUE2" } }- 다음을 바꿉니다. - JOB_LABEL_NAME1: 작업에 적용할 첫 번째 라벨의 이름
- JOB_LABEL_VALUE1: 작업에 적용할 첫 번째 라벨의 값
- JOB_LABEL_NAME2: 작업에 적용할 두 번째 라벨의 이름
- JOB_LABEL_VALUE2: 작업에 적용할 두 번째 라벨의 값
 
- gcloud batch jobs submit명령어를 다음 플래그와 함께 사용하여- us-central1에서 작업을 만듭니다.- gcloud batch jobs submit example-job \ --config=JSON_CONFIGURATION_FILE \ --location=us-central1- JSON_CONFIGURATION_FILE을 이전 단계에서 만든 작업의 구성 세부정보가 있는 JSON 파일의 경로로 바꿉니다.
API
예를 들어 us-central1에서 작업 자체에 적용할 두 개의 커스텀 라벨을 정의하는 컨테이너 작업을 만들려면 jobs.create 메서드에 대한 POST 요청을 만들고 labels 필드를 지정합니다.
POST https://batch.googleapis.com/v1/projects/example-project/locations/us-central1/jobs?job_id=example-job
{
  "taskGroups": [
    {
      "taskSpec": {
        "runnables": [
          {
            "container": {
              "imageUri": "gcr.io/google-containers/busybox",
              "entrypoint": "/bin/sh",
              "commands": [
                "-c",
                "echo Hello World!"
              ]
            }
          }
        ]
      }
    }
  ],
  "labels": {
    "JOB_LABEL_NAME1": "JOB_LABEL_VALUE1",
    "JOB_LABEL_NAME2": "JOB_LABEL_VALUE2"
  }
}
다음을 바꿉니다.
- JOB_LABEL_NAME1: 작업에 적용할 첫 번째 라벨의 이름
- JOB_LABEL_VALUE1: 작업에 적용할 첫 번째 라벨의 값
- JOB_LABEL_NAME2: 작업에 적용할 두 번째 라벨의 이름
- JOB_LABEL_VALUE2: 작업에 적용할 두 번째 라벨의 값
자바
Node.js
Python
실행 가능 항목의 커스텀 라벨 정의
실행 가능 항목의 labels 필드에 정의된 라벨은 해당 실행 가능 항목에만 적용됩니다.
gcloud CLI 또는 Batch API를 사용하여 작업을 만들 때 하나 이상의 실행 가능 항목에 라벨을 정의할 수 있습니다.
gcloud
예를 들어 us-central1에서 두 개의 커스텀 라벨(두 작업의 각 실행 가능 항목에 커스텀 라벨 하나)을 정의하는 작업을 만들려면 다음 단계를 따르세요.
- 작업의 구성 세부정보와 - runnables.labels필드를 지정하는 JSON 파일을 만듭니다.- { "taskGroups": [ { "taskSpec": { "runnables": [ { "container": { "imageUri": "gcr.io/google-containers/busybox", "entrypoint": "/bin/sh", "commands": [ "-c", "echo Hello from task ${BATCH_TASK_INDEX}!" ] }, "labels": { "RUNNABLE1_LABEL_NAME1": "RUNNABLE1_LABEL_VALUE1" } }, { "script": { "text": "echo Hello from task ${BATCH_TASK_INDEX}!" }, "labels": { "RUNNABLE2_LABEL_NAME1": "RUNNABLE2_LABEL_VALUE1" } } ] } } ] }- 다음을 바꿉니다. - RUNNABLE1_LABEL_NAME1: 작업의 첫 번째 실행 가능 항목에 적용할 라벨의 이름
- RUNNABLE1_LABEL_VALUE1: 작업의 첫 번째 실행 가능 항목에 적용할 라벨의 값
- RUNNABLE2_LABEL_NAME1: 작업의 두 번째 실행 가능 항목에 적용할 라벨의 이름
- RUNNABLE2_LABEL_VALUE1: 작업의 두 번째 실행 가능 항목에 적용할 라벨의 값
 
- gcloud batch jobs submit명령어를 사용하여- us-central1에서 작업을 만듭니다.- gcloud batch jobs submit example-job \ --config=JSON_CONFIGURATION_FILE \ --location=us-central1- JSON_CONFIGURATION_FILE을 이전 단계에서 만든 작업의 구성 세부정보가 있는 JSON 파일의 경로로 바꿉니다.
API
예를 들어 us-central1에서 두 작업의 실행 가능 항목 각각에 하나씩 두 개의 커스텀 라벨을 정의하는 작업을 만들려면 jobs.create 메서드에 POST 요청을 만들고 runnables.labels 필드를 지정합니다.
POST https://batch.googleapis.com/v1/projects/example-project/locations/us-central1/jobs?job_id=example-job
{
  "taskGroups": [
    {
      "taskSpec": {
        "runnables": [
          {
            "container": {
              "imageUri": "gcr.io/google-containers/busybox",
              "entrypoint": "/bin/sh",
              "commands": [
                "-c",
                "echo Hello from ${BATCH_TASK_INDEX}!"
              ]
            },
            "labels": {
              "RUNNABLE1_LABEL_NAME1": "RUNNABLE1_LABEL_VALUE1"
            }
          },
          {
            "script": {
              "text": "echo Hello from ${BATCH_TASK_INDEX}!"
            },
            "labels": {
              "RUNNABLE2_LABEL_NAME1": "RUNNABLE2_LABEL_VALUE1"
            }
          }
        ]
      }
    }
  ]
}
다음을 바꿉니다.
- RUNNABLE1_LABEL_NAME1: 첫 번째 작업의 실행 가능 항목에 적용할 라벨의 이름
- RUNNABLE1_LABEL_VALUE1: 첫 번째 작업의 실행 가능 항목에 적용할 라벨의 값
- RUNNABLE2_LABEL_NAME1: 두 번째 작업의 실행 가능 항목에 적용할 라벨의 이름
- RUNNABLE2_LABEL_VALUE1: 두 번째 작업의 실행 가능 항목에 적용할 라벨의 값
자바
Node.js
Python
다음 단계
- 다음을 수행할 때 라벨을 필터로 사용합니다. 
- 작업 삭제 방법 알아보기