예시 작업 만들기 및 실행

Batch에서 동영상 트랜스코딩 작업 예시를 만들고 실행하는 방법을 알아봅니다.


Google Cloud 콘솔에서 이 태스크에 대한 단계별 안내를 직접 수행하려면 둘러보기를 클릭합니다.

둘러보기


시작하기 전에

  1. Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
  2. Google Cloud CLI를 설치합니다.
  3. gcloud CLI를 초기화하려면 다음 명령어를 실행합니다.

    gcloud init
  4. Google Cloud 프로젝트를 만들거나 선택합니다.

    • Google Cloud 프로젝트를 만듭니다.

      gcloud projects create PROJECT_ID

      PROJECT_ID를 만들려는 Google Cloud 프로젝트의 이름으로 바꿉니다.

    • 만든 Google Cloud 프로젝트를 선택합니다.

      gcloud config set project PROJECT_ID

      PROJECT_ID를 Google Cloud 프로젝트 이름으로 바꿉니다.

  5. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  6. Batch, Compute Engine, Logging and Cloud Storage API를 사용 설정합니다.

    gcloud services enable batch.googleapis.com compute.googleapis.com logging.googleapis.com storage.googleapis.com
  7. Google Cloud CLI를 설치합니다.
  8. gcloud CLI를 초기화하려면 다음 명령어를 실행합니다.

    gcloud init
  9. Google Cloud 프로젝트를 만들거나 선택합니다.

    • Google Cloud 프로젝트를 만듭니다.

      gcloud projects create PROJECT_ID

      PROJECT_ID를 만들려는 Google Cloud 프로젝트의 이름으로 바꿉니다.

    • 만든 Google Cloud 프로젝트를 선택합니다.

      gcloud config set project PROJECT_ID

      PROJECT_ID를 Google Cloud 프로젝트 이름으로 바꿉니다.

  10. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  11. Batch, Compute Engine, Logging and Cloud Storage API를 사용 설정합니다.

    gcloud services enable batch.googleapis.com compute.googleapis.com logging.googleapis.com storage.googleapis.com
  12. 이 튜토리얼을 완료하는 데 필요한 권한이 사용자와 작업의 서비스 계정에 있는지 확인합니다. 이 가이드에서는 작업에 기본 서비스 계정인 Compute Engine 기본 서비스 계정을 사용합니다.

    • 이 튜토리얼을 완료하는 데 필요한 권한을 얻으려면 관리자에게 다음의 IAM 역할을 부여해 달라고 요청하세요.

      역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.

      커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

    • Compute Engine 기본 서비스 계정에 이 튜토리얼을 완료하는 데 필요한 권한이 있는지 확인하려면 관리자에게 Compute Engine 기본 서비스 계정에 다음 IAM 역할을 부여해 달라고 요청하세요.

      • 프로젝트에 대한 Batch 에이전트 보고자(roles/batch.agentReporter)
      • 작업이 Cloud Storage 버킷에 액세스하도록 허용: 프로젝트에 대한 스토리지 관리자(roles/storage.admin)
      • 작업이 Logging에서 로그를 생성하도록 허용: 프로젝트에 대한 로그 작성자(roles/logging.logWriter)

  13. Batch git 저장소를 현재 디렉터리에 클론합니다.
    git clone https://github.com/GoogleCloudPlatform/batch-samples.git
    
  14. transcoding 디렉터리로 이동합니다.
    cd batch-samples/transcoding/
    

작업 입력 준비

  1. Cloud Storage 버킷을 만듭니다.

    gcloud storage buckets create gs://BUCKET_NAME
    

    BUCKET_NAME을 버킷의 전역적으로 고유 이름으로 바꿉니다.

    출력은 다음과 비슷합니다.

    Creating gs://BUCKET_NAME/...
    
  2. transcode.sh 스크립트와 동영상 파일이 포함된 폴더를 Cloud Storage 버킷에 복사합니다.

    gcloud storage cp -R transcode.sh input gs://BUCKET_NAME
    

    출력은 다음과 비슷합니다.

    Copying file://transcode.sh to gs://BUCKET_NAME/transcode.sh
    Copying file://input/video-2.mp4 to gs://BUCKET_NAME/input/video-2.mp4
    Copying file://input/video-1.mp4 to gs://BUCKET_NAME/input/video-1.mp4
    Copying file://input/video-0.mp4 to gs://BUCKET_NAME/input/video-0.mp4
      Completed files 4/4 | 37.5MiB/37.5MiB
    
    Average throughput: 48.4MiB/s
    

작업 만들기

  1. 원하는 텍스트 편집기에서 job.json 구성 파일을 엽니다.

  2. remotePath 필드 값을 Cloud Storage 버킷 이름으로 설정합니다.

    {
      "taskGroups": [
        {
          "taskSpec": {
            "runnables": [
              {
                "script": {
                  "text": "bash /mnt/share/transcode.sh"
                }
              }
            ],
            "computeResource": {
              "cpuMilli": 2000,
              "memoryMib": 2048
            },
            "volumes": [
              {
                "gcs": {
                  "remotePath": "BUCKET_NAME"
                },
                "mountPath": "/mnt/share"
              }
            ],
            "maxRetryCount": 2,
            "maxRunDuration": "600s"
          },
          "taskCount": 3,
          "parallelism": 3
        }
      ],
      "allocationPolicy": {
        "instances": [
          {
            "policy": {
              "machineType": "n2d-standard-4",
              "provisioningModel": "SPOT"
            }
          }
        ]
      },
      "labels": {
        "department": "creative",
        "env": "testing"
      },
      "logsPolicy": {
        "destination": "CLOUD_LOGGING"
      }
    }
    
  3. 변경사항을 저장하고 텍스트 편집기를 닫습니다.

  4. transcode 작업을 만듭니다.

    gcloud batch jobs submit transcode \
        --config=job.json \
        --location=us-central1
    

    출력은 다음과 비슷합니다.

    Job transcode-7a1654ca-211c-40e8-b0fb-8a00 was successfully submitted.
    ...
    

    작업은 태스크 3개를 동시에 실행합니다. 각 태스크는 동영상 파일 3개 중 1개를 인코딩하여 Cloud Storage 버킷에 업로드하는 transcode.sh 스크립트를 실행합니다.

작업 모니터링

  1. Google Cloud 콘솔에서 작업 목록 페이지로 이동합니다.

    작업 목록으로 이동

  2. 작업 이름 열에서 트랜스코딩을 클릭합니다.

    작업 세부정보 페이지가 열립니다.

  3. 이벤트 탭을 클릭합니다.

    이벤트 목록 섹션에서 transcode 작업의 상태를 모니터링할 수 있습니다. 작업이 큐에 추가, 예약, 실행을 완료하는 데 걸리는 시간은 여러 요인에 따라 달라집니다. 이 예시에서는 작업이 약 5분 내에 완료될 것으로 예상할 수 있습니다.

  4. 선택사항: 페이지를 업데이트하려면 새로고침을 클릭합니다.

다음 단계를 진행하기 전에 작업 상태가 성공으로 설정되어 있는지 확인합니다. 작업이 실패하면 문제 해결을 참조하세요.

인코딩된 동영상 보기

  1. Google Cloud 콘솔에서 버킷 페이지로 이동합니다.

    버킷으로 이동

  2. 이름 열에서 BUCKET_NAME을 클릭합니다.

    버킷 세부정보 페이지가 열립니다.

  3. 이름 열에서 output/을 클릭한 다음 인코딩된 동영상 파일 중 하나를 클릭합니다.

    객체 세부정보 페이지가 열립니다.

  4. 인코딩된 동영상을 보려면 미리보기를 클릭한 후 재생을 클릭합니다.

삭제

이 페이지에서 사용한 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 리소스가 포함된 Google Cloud 프로젝트를 삭제하면 됩니다.

프로젝트 삭제

비용이 청구되지 않도록 하는 가장 쉬운 방법은 이 튜토리얼에서 사용한 프로젝트를 삭제하는 것입니다.

Google Cloud 프로젝트를 삭제합니다.

gcloud projects delete PROJECT_ID

개별 리소스 삭제

현재 프로젝트를 계속 사용하려면 이 튜토리얼에서 사용된 개별 리소스를 삭제합니다.

작업 삭제

Batch 작업이 완료된 후 transcode 작업을 삭제합니다.

gcloud batch jobs delete transcode \
    --location=us-central1

출력은 다음과 비슷합니다.

Job projects/example-project/locations/us-central1/jobs/transcode deletion is in progress

작업을 삭제하면 작업의 세부정보와 기록도 삭제됩니다. 작업 로그는 Cloud Logging 로그 보관 기간이 끝날 때 자동으로 삭제됩니다.

버킷 삭제

이 튜토리얼에서 사용한 Cloud Storage 버킷과 해당 콘텐츠가 더 이상 필요하지 않으면 버킷을 삭제합니다.

gcloud storage rm gs://BUCKET_NAME \
    --recursive

출력은 다음과 비슷합니다.

Removing objects:
Removing gs://BUCKET_NAME/input/video-0.mp4#1694788495332395...
Removing gs://BUCKET_NAME/input/video-2.mp4#1694788495296173...
Removing gs://BUCKET_NAME/input/video-1.mp4#1694788495228839...
Removing gs://BUCKET_NAME/output/video-0.mp4#1694788495332395...
Removing gs://BUCKET_NAME/output/video-2.mp4#1694788495296173...
Removing gs://BUCKET_NAME/output/video-1.mp4#1694788495228839...
Removing gs://BUCKET_NAME/transcode.sh#1694788495039427...
  Completed 4/4
Removing Buckets:
Removing gs://BUCKET_NAME/...
  Completed 1/1

Git 저장소 삭제

이 튜토리얼을 위해 클론한 Batch git 저장소가 더 이상 필요하지 않으면 삭제할 수 있습니다.

cd ../../ && rm -rf batch-samples

다음 단계