작업 만들기

이 페이지에서는 기존 컨테이너 이미지에서 Cloud Run 작업을 만들고 업데이트하는 방법을 설명합니다. 요청을 리슨하고 제공하는 Cloud Run 서비스와 달리 Cloud Run 작업은 태스크만 실행하고 완료 시 종료됩니다. 작업에서는 요청을 리슨하거나 제공하지 않습니다.

작업을 만들거나 업데이트하면 다음을 수행할 수 있습니다.

작업을 단일 태스크 또는 동시에 실행되는 독립적인 태스크 여러 개(최대 10,000개 태스크)로 구성할 수 있습니다. 각 태스크는 컨테이너 인스턴스 하나를 실행하고 오류가 발생할 경우 재시도하도록 구성될 수 있습니다. 각 태스크는 CLOUD_RUN_TASK_INDEX 환경 변수에 저장된 색인을 인식합니다. 전체 태스크 수는 CLOUD_RUN_TASK_COUNT 환경 변수에 저장됩니다. 데이터를 병렬로 처리하는 경우 코드에서 데이터의 하위 집합을 처리하는 태스크를 결정해야 합니다.

태스크에 제한 시간을 설정하고 태스크가 실패할 경우 재시도 횟수를 지정할 수 있습니다. 최대 재시도 횟수를 초과하는 태스크는 실패로 표시되고 모든 태스크가 실행된 후에 작업 실행이 실패로 표시됩니다.

기본적으로 각 태스크는 최대 10분 동안 실행됩니다. 이 시간은 더 짧게 변경할 수도 있고 최대 24시간까지 더 긴 시간으로 변경할 수도 있습니다. 태스크 제한 시간 설정을 변경하기만 하면 됩니다.

작업 실행에는 명시적인 제한 시간이 없습니다. 모든 태스크가 완료되면 작업 실행이 완료된 것입니다.

작업은 2세대 실행 환경을 사용합니다.

만들고 실행하는 데 필요한 IAM 권한

Cloud Run 작업을 사용하려면 다음 역할 중 하나가 있어야 합니다.

  • 작업 만들기/업데이트/삭제 및 실행에 대한 전체 권한을 위한 Cloud Run 관리자
  • 작업 실행을 위한 Cloud Run 호출자
  • 작업을 보고 나열하는 Cloud Run 뷰어

커스텀 역할을 구성하는 경우 다음 권한을 사용합니다.

  • run.jobs.{create/update/run/delete/get/list/getIamPolicy/setIamPolicy}
  • run.executions.{get/list/delete}
  • run.tasks.{get/list}

run.jobs.run을 사용하면 사용자가 작업을 실행할 수 있으므로 새 실행이 시작됩니다. 별도의 run.executions.create 권한은 없습니다. 실행을 만들 수 있는 유일한 방법은 작업을 실행하는 것입니다.

지원되는 Container Registry 및 이미지

Artifact Registry, Container Registry(지원 중단됨) 또는 Docker Hub에 저장된 컨테이너 이미지를 사용할 수 있습니다. Artifact Registry를 사용하는 것이 좋습니다.

다음 유형의 컨테이너 이미지만 사용할 수 있습니다.

Docker 공식 이미지 또는 Docker 스폰서 OSS 이미지와 같이 인기 있는 컨테이너 이미지를 배포하기 위해서는 Docker Hub만 고려해야 합니다. 가용성을 높이려면 Artifact Registry 원격 저장소를 통해 이러한 Docker Hub 이미지를 배포하는 것이 좋습니다.

다른 유형의 Container Registry에 컨테이너 이미지를 저장하는 경우 지원되지 않는 레지스트리에서 이미지 배포의 안내를 따릅니다.

새 작업 만들기

Google Cloud 콘솔, Google Cloud CLI, YAML, Terraform을 사용하여 새 작업을 만들 수 있습니다.

콘솔

새 작업을 만들려면 다음 안내를 따르세요.

  1. Cloud Run으로 이동

  2. 작업 탭을 클릭합니다.

  3. 작업 만들기를 클릭하여 작업 만들기 양식을 표시합니다.

    1. 양식에서 작업 코드가 포함된 컨테이너 이미지를 지정하거나 이전에 배포된 컨테이너 목록에서 선택합니다.
    2. 작업 이름은 컨테이너 이미지에서 자동으로 생성됩니다. 필요에 따라 작업 이름을 수정하거나 변경할 수 있습니다. 작업이 생성되면 작업 이름을 변경할 수 없습니다.
    3. 작업을 배치할 리전을 선택합니다. 리전 선택기는 탄소 배출량이 가장 낮은 리전을 강조표시합니다.
    4. 작업에서 실행할 태스크 수를 지정합니다. 모든 태스크가 성공해야 작업이 성공합니다. 기본적으로 태스크는 동시에 실행됩니다.
  4. 컨테이너, 볼륨, 네트워킹, 보안을 클릭하여 추가 작업 속성을 설정합니다.

    • 태스크 용량에서 다음을 수행합니다.
    1. 메모리 드롭다운 메뉴에서 필요한 메모리 양을 지정합니다. 기본값은 필수 최솟값인 512MiB입니다.
    2. CPU 드롭다운 메뉴에서 필요한 CPU 양을 지정합니다. 기본값은 필수 최솟값인 CPU 1개입니다.
    3. 태스크 제한 시간에서 태스크가 실행될 수 있는 최대 시간을 초 단위로 지정합니다(최대 24시간). 각 태스크는 이 시간 내에 완료해야 합니다. 기본값은 10분(600초)입니다.

    4. 실패한 태스크당 재시도 횟수에서 태스크가 실패할 경우의 재시도 횟수를 지정합니다. 기본값은 재시도 3회입니다.

    • 동시 로드에서 다음을 수행합니다.

      1. 대부분의 경우 최대한 많은 태스크를 동시에 실행을 선택합니다.
      2. 작업에서 액세스하는 리소스의 확장 제약조건으로 인해 하한을 설정해야 하는 경우 최대 동시 태스크 수 제한을 선택하고 커스텀 동시 로드 제한 텍스트 상자에 동시 태스크 수를 지정합니다.
  5. 선택적으로 적절한 탭에서 다른 설정을 구성합니다.

  6. 작업 구성을 마쳤으면 만들기를 클릭하여 Cloud Run에서 작업을 만듭니다.

  7. 작업을 실행하려면 작업 실행 또는 일정에 따라 작업 실행을 참조하세요.

명령줄

명령줄을 사용하려면 gcloud CLI가 이미 설정되어 있어야 합니다.

새 작업을 만들려면 다음 안내를 따르세요.

  1. 다음 명령어를 실행합니다.

    gcloud run jobs create JOB_NAME --image IMAGE_URL OPTIONS
    또는 배포 명령어를 사용합니다.
    gcloud run jobs deploy JOB_NAME --image IMAGE_URL OPTIONS

    • JOB_NAME을 만들려는 작업의 이름으로 바꿉니다. 이 매개변수를 생략할 수 있지만 생략하면 작업 이름을 입력하라는 메시지가 표시됩니다.
    • IMAGE_URL을 컨테이너 이미지에 대한 참조(예: us-docker.pkg.dev/cloudrun/container/job:latest)로 바꿉니다.
    • 필요한 경우 OPTIONS를 다음 옵션 중 하나로 바꿉니다.

      옵션 설명
      --tasks 1 이상의 정수를 사용합니다. 기본값은 1이며 최댓값은 10,000입니다. 각 태스크에서는 태스크 수인 CLOUD_RUN_TASK_COUNT와 함께 0에서 태스크 수 빼기 1 사이의 값을 가진 환경 변수 CLOUD_RUN_TASK_INDEX를 제공합니다.
      --max-retries 실패한 태스크가 다시 시도된 횟수입니다. 이 한도를 초과하여 태스크가 실패하면 전체 작업이 실패로 표시됩니다. 예를 들어 1로 설정하면 실패한 태스크가 한 번만 재시도되어 총 2회 시도됩니다. 기본값은 3입니다. 0~10의 정수를 사용합니다.
      --task-timeout '2s'와 같은 기간을 사용합니다. 기본값은 10분이며, 최댓값은 24시간입니다.
      --parallelism 동시에 실행할 수 있는 최대 태스크 수입니다. 기본적으로 태스크는 최대한 빨리 병렬로 시작됩니다. 값 범위는 동시 처리를 참조하세요.
      --execute-now 설정되면 작업이 생성된 직후에 작업 실행이 시작됩니다. gcloud run jobs create 다음에 gcloud run jobs execute를 호출하는 것과 같습니다.

      위 옵션 외에도 환경 변수 또는 메모리 제한과 같은 추가 구성을 지정할 수 있습니다.

      작업을 만들 때 사용 가능한 옵션의 전체 목록은 gcloud run jobs create 명령줄 문서를 참조하세요.

  2. 작업 생성이 완료될 때까지 기다립니다. 성공적으로 완료되면 성공 메시지가 표시됩니다.

  3. 작업을 실행하려면 작업 실행 또는 일정에 따라 작업 실행을 참조하세요.

YAML

YAML 파일에 작업 사양을 저장한 후 gcloud CLI를 사용하여 배포할 수 있습니다.

  1. 다음 내용으로 새 job.yaml 파일을 만듭니다.

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: JOB
    spec:
      template:
        spec:
          template:
            spec:
              containers:
              - image: IMAGE

    바꾸기

    • JOB을 Cloud Run 작업 이름으로 바꿉니다. 작업 이름은 49자 이하여야 하며 리전 및 프로젝트별로 고유해야 합니다.
    • IMAGE를 작업 컨테이너 이미지의 URL로 바꿉니다.

    또한 환경 변수 또는 메모리 제한과 같은 추가 구성을 지정할 수 있습니다.

  2. 다음 명령어를 사용하여 새 작업을 배포합니다.

    gcloud run jobs replace job.yaml

Terraform

Terraform 구성을 적용하거나 삭제하는 방법은 기본 Terraform 명령어를 참조하세요.

새 Cloud Run 작업을 만들려면 google_cloud_run_v2_job 리소스를 사용하고 다음 스니펫에 표시된 것처럼 main.tf 파일을 수정합니다.

resource "google_cloud_run_v2_job" "default" {
  provider     = google-beta
  name         = "cloud-run-job"
  location     = "us-central1"
  launch_stage = "BETA"

  template {
    template {
      containers {
        image = "us-docker.pkg.dev/cloudrun/container/job:latest"
      }
    }
  }
}

클라이언트 라이브러리

코드에서 작업을 만들기:

REST API

작업을 만들려면 POST HTTP 요청을 Cloud Run Admin API jobs 엔드포인트로 보냅니다.

예를 들어 다음과 같이 curl을 사용합니다.

curl -H "Content-Type: application/json" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -X POST \
  -d '{template: {template: {containers: [{image: "IMAGE_URL"}]}}}' \
  https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/jobs?jobId=JOB_NAME

다음과 같이 바꿉니다.

  • ACCESS_TOKEN작업을 만들 수 있는 IAM 권한이 있는 계정의 유효한 액세스 토큰으로 바꿉니다. 예를 들어 gcloud에 로그인한 경우 gcloud auth print-access-token을 사용하여 액세스 토큰을 검색할 수 있습니다. Cloud Run 컨테이너 인스턴스 내에서 컨테이너 인스턴스 메타데이터 서버를 사용하여 액세스 토큰을 검색할 수 있습니다.
  • JOB_NAME을 만들려는 작업의 이름으로 바꿉니다.
  • IMAGE_URL를 작업 컨테이너 이미지의 URL로 바꿉니다(예: us-docker.pkg.dev/cloudrun/container/job:latest).
  • REGION을 작업의 Google Cloud 리전으로 바꿉니다.
  • PROJECT_ID를 Google Cloud 프로젝트 ID로 바꿉니다.

Cloud Run 위치

Cloud Run은 리전을 기반으로 합니다. 즉, Cloud Run 서비스를 실행하는 인프라가 특정 리전에 위치해 있으며 해당 리전 내의 모든 영역에서 중복으로 사용할 수 있도록 Google이 관리합니다.

Cloud Run 서비스를 실행하는 리전을 선택하는 데 있어 중요한 기준은 지연 시간, 가용성 또는 내구성 요구사항입니다. 일반적으로 사용자와 가장 가까운 리전을 선택할 수 있지만 Cloud Run 서비스에서 사용하는 다른 Google Cloud 제품 위치도 고려해야 합니다. 여러 위치에서 Google Cloud 제품을 함께 사용하면 서비스 지연 시간과 비용에 영향을 미칠 수 있습니다.

Cloud Run은 다음 리전에서 사용할 수 있습니다.

등급 1 가격 적용

  • asia-east1(타이완)
  • asia-northeast1(도쿄)
  • asia-northeast2(오사카)
  • europe-north1(핀란드) 잎 아이콘 낮은 CO2
  • europe-southwest1(마드리드)
  • europe-west1(벨기에) 잎 아이콘 낮은 CO2
  • europe-west4(네덜란드)
  • europe-west8(밀라노)
  • europe-west9(파리) 잎 아이콘 낮은 CO2
  • me-west1(텔아비브)
  • us-central1(아이오와) 잎 아이콘 낮은 CO2
  • us-east1(사우스캐롤라이나)
  • us-east4(북 버지니아)
  • us-east5(콜럼버스)
  • us-south1(댈러스)
  • us-west1(오리건) 잎 아이콘 낮은 CO2

등급 2 가격 적용

  • africa-south1(요하네스버그)
  • asia-east2(홍콩)
  • asia-northeast3(대한민국 서울)
  • asia-southeast1(싱가포르)
  • asia-southeast2 (자카르타)
  • asia-south1(인도 뭄바이)
  • asia-south2(인도 델리)
  • australia-southeast1(시드니)
  • australia-southeast2(멜버른)
  • europe-central2(폴란드 바르샤바)
  • europe-west10(베를린)
  • europe-west12(토리노)
  • europe-west2(영국 런던) 잎 아이콘 낮은 CO2
  • europe-west3(독일 프랑크푸르트) 잎 아이콘 낮은 CO2
  • europe-west6(스위스 취리히) 잎 아이콘 낮은 CO2
  • me-central1(도하)
  • me-central2(담맘)
  • northamerica-northeast1(몬트리올) 잎 아이콘 낮은 CO2
  • northamerica-northeast2(토론토) 잎 아이콘 낮은 CO2
  • southamerica-east1(브라질 상파울루) 잎 아이콘 낮은 CO2
  • southamerica-west1(칠레 산티아고) 잎 아이콘 낮은 CO2
  • us-west2(로스앤젤레스)
  • us-west3(솔트레이크시티)
  • us-west4(라스베이거스)

Cloud Run 서비스를 이미 만들었다면 Google Cloud 콘솔의 Cloud Run 대시보드에서 리전을 확인할 수 있습니다.

새 작업을 만들 때 Cloud Run 서비스 에이전트는 기본적으로 컨테이너에 액세스할 수 있어야 합니다.

기존 작업 업데이트

구성 설정을 변경하려면 컨테이너 이미지가 변경되지 않더라도 작업을 업데이트해야 합니다. 변경되지 않은 설정에 대해서는 이전 설정이 계속 사용됩니다.

Google Cloud 콘솔, Google Cloud CLI, YAML 또는 Terraform을 사용하여 기존 작업을 업데이트할 수 있습니다.

콘솔

기존 작업을 업데이트하려면 다음 안내를 따르세요.

  1. Cloud Run으로 이동

  2. 작업 탭을 클릭하여 작업 목록을 표시합니다.

  3. 원하는 작업을 클릭하여 작업 세부정보 페이지를 표시합니다.

  4. 수정을 클릭합니다.

  5. 작업 코드를 변경한 경우 새 컨테이너 이미지 다이제스트를 지정합니다.

  6. 선택적으로 필요한 경우 작업에 있는 태스크 수를 변경합니다.

  7. 선택적으로 컨테이너, 볼륨, 네트워킹, 보안을 클릭하여 원하는 대로 추가 작업 속성을 업데이트합니다.

    • 태스크 용량에서 다음을 수행합니다.
    1. 메모리 드롭다운 메뉴에서 필요한 메모리 양을 지정합니다. 기본값은 필수 최솟값인 512MiB입니다.
    2. CPU 드롭다운 메뉴에서 필요한 CPU 양을 지정합니다. 기본값은 필수 최솟값인 CPU 1개입니다.
    3. 태스크 제한 시간에서 태스크가 실행될 수 있는 최대 시간을 초 단위로 지정합니다(최대 24시간). 각 태스크는 이 시간 내에 완료해야 합니다. 기본값은 10분(600초)입니다.
    4. 실패한 태스크당 재시도 횟수에서 태스크가 실패할 경우의 재시도 횟수를 지정합니다. 기본값은 재시도 3회입니다.
    • 동시 로드에서 다음을 수행합니다.

      1. 대부분의 경우 최대한 많은 태스크를 동시에 실행을 선택합니다.
      2. 작업에서 액세스하는 리소스의 확장 제약으로 인해 하한을 설정해야 하는 경우 동시 태스크 수 제한을 선택하고 커스텀 동시 로드 제한 텍스트 상자에서 최대 동시 태스크 수를 지정합니다.
  8. 선택적으로 적절한 탭에서 다른 설정을 구성합니다.

  9. 작업 구성을 마쳤으면 저장을 클릭하여 Cloud Run에서 작업을 만들고 작업 만들기가 완료될 때까지 기다립니다.

  10. 작업을 실행하려면 작업 실행 또는 일정에 따라 작업 실행을 참조하세요.

명령줄

  1. Google Cloud 콘솔에서 Cloud Shell을 활성화합니다.

    Cloud Shell 활성화

    Google Cloud 콘솔 하단에서 Cloud Shell 세션이 시작되고 명령줄 프롬프트가 표시됩니다. Cloud Shell은 Google Cloud CLI가 사전 설치된 셸 환경으로, 현재 프로젝트의 값이 이미 설정되어 있습니다. 세션이 초기화되는 데 몇 초 정도 걸릴 수 있습니다.

  2. 다음 명령어를 실행합니다.

    gcloud run jobs update JOB_NAME

    바꾸기

    • JOB_NAME을 업데이트할 작업의 이름으로 바꿉니다.
    • 필요한 경우 OPTIONS을 다음 옵션으로 바꿉니다.

      옵션 설명
      --tasks 1 이상의 정수를 사용합니다. 기본값은 1이며 최댓값은 10,000입니다. 각 태스크에서는 태스크 수인 CLOUD_RUN_TASK_COUNT와 함께 0에서 태스크 수 빼기 1 사이의 값을 가진 환경 변수 CLOUD_RUN_TASK_INDEX를 제공합니다.
      --max-retries 실패한 태스크가 다시 시도된 횟수입니다. 이 한도를 초과하여 태스크가 실패하면 전체 작업이 실패로 표시됩니다. 예를 들어 1로 설정하면 실패한 태스크가 한 번만 재시도되어 총 2회 시도됩니다. 기본값은 3입니다. 0~10의 정수를 사용합니다.
      --task-timeout '2s'와 같은 기간을 사용합니다. 기본값은 10분이며, 최댓값은 24시간입니다.
      --parallelism 동시에 실행할 수 있는 최대 태스크 수입니다. 기본적으로 태스크는 최대한 빨리 병렬로 시작됩니다. 값 범위는 동시 처리를 참조하세요.

    위 옵션 외에도 다른 선택적 구성 설정을 지정할 수 있습니다.

    작업을 만들 때 사용 가능한 옵션의 전체 목록은 gcloud run jobs create 명령줄 문서를 참조하세요.

  3. 작업 업데이트가 완료될 때까지 기다립니다. 성공적으로 완료되면 다음과 비슷한 성공 메시지가 표시됩니다.

    Job [JOB_NAME] has been successfully updated.
    View details about this job by running `gcloud run jobs describe JOB_NAME`.
    See logs for this execution at: https://console.cloud.google.com/logs/viewer?project=PROJECT_ID&resource=cloud_run_revision/service_name/JOB_NAME
    
  4. 작업을 실행하려면 작업 실행 또는 일정에 따라 작업 실행을 참조하세요.

YAML

기존 작업 구성을 다운로드하거나 확인해야 할 경우에는 다음 명령어를 사용해서 결과를 YAML 파일로 저장합니다.

gcloud run jobs describe JOB --format export > job.yaml

작업 구성 YAML 파일에서 필요에 따라 spec.template 하위 속성을 수정하여 구성 설정을 업데이트하고 다시 배포합니다.

  1. 기존 작업 구성을 업데이트합니다.

    gcloud run jobs replace job.yaml
  2. 작업을 실행하려면 작업 실행 또는 일정에 따라 작업 실행을 참조하세요.

Terraform

main.tf 파일에서 terraform apply 명령어를 사용하여 작업 구성을 변경합니다. 다음에 대한 자세한 Terraform 안내를 사용할 수 있습니다.

자세한 내용은 terraform apply 명령줄 옵션을 참조하세요.

클라이언트 라이브러리

코드에서 기존 작업을 업데이트하려면 다음 안내를 따르세요.

REST API

작업을 업데이트하려면 PATCH HTTP 요청을 Cloud Run Admin API jobs 엔드포인트로 보냅니다.

예를 들어 다음과 같이 curl을 사용합니다.

curl -H "Content-Type: application/json" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -X PATCH \
  -d '{template: {template: {containers: [{image: "IMAGE_URL"}]}}}' \
  https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/jobs/JOB_NAME

다음과 같이 바꿉니다.

  • ACCESS_TOKEN작업을 업데이트할 수 있는 IAM 권한이 있는 계정의 유효한 액세스 토큰으로 바꿉니다. 예를 들어 gcloud에 로그인한 경우 gcloud auth print-access-token을 사용하여 액세스 토큰을 검색할 수 있습니다. Cloud Run 컨테이너 인스턴스 내에서 컨테이너 인스턴스 메타데이터 서버를 사용하여 액세스 토큰을 검색할 수 있습니다.
  • JOB_NAME을 업데이트할 작업의 이름으로 바꿉니다.
  • IMAGE_URL를 작업 컨테이너 이미지의 URL로 바꿉니다(예: us-docker.pkg.dev/cloudrun/container/job:latest).
  • REGION을 작업의 Google Cloud 리전으로 바꿉니다.
  • PROJECT_ID를 Google Cloud 프로젝트 ID로 바꿉니다.

샘플 코드

간단한 작업을 보여주는 코드 샘플은 언어별 빠른 시작을 참조하세요.

다음 단계

작업을 만들거나 업데이트하면 다음을 수행할 수 있습니다.