サンプルジョブを作成して実行する

Google Cloud用 Batch を使用して動画をコード変換するバッチ処理ジョブのサンプルを作成して実行する方法について学習します。


このタスクを Google Cloud コンソールで直接行う際の順を追ったガイダンスについては、[ガイドを表示] をクリックしてください。

ガイドを表示


準備

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Install the Google Cloud CLI.
  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Enable the Batch, Compute Engine, Logging and Cloud Storage APIs:

    gcloud services enable batch.googleapis.com compute.googleapis.com logging.googleapis.com storage.googleapis.com
  7. Install the Google Cloud CLI.
  8. To initialize the gcloud CLI, run the following command:

    gcloud init
  9. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  10. Make sure that billing is enabled for your Google Cloud project.

  11. Enable the Batch, Compute Engine, Logging and Cloud Storage APIs:

    gcloud services enable batch.googleapis.com compute.googleapis.com logging.googleapis.com storage.googleapis.com
  12. このチュートリアルを完了するために必要な権限が、ユーザーとジョブのサービス アカウントに付与されていることを確認します。このチュートリアルでは、ジョブにデフォルトのサービス アカウント(Compute Engine のデフォルトのサービス アカウント)を使用します。

    • このチュートリアルを完了するために必要な権限を取得するには、管理者に次の IAM ロールを付与するよう依頼してください。

      ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

      必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

    • このチュートリアルを完了するために必要な権限を Compute Engine のデフォルト サービス アカウントに付与するには、Compute Engine のデフォルト サービス アカウントに次の IAM ロールを付与するように管理者へ依頼してください。

      • プロジェクトに対するバッチ エージェント報告者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 つのタスクを同時に実行します。各タスクは transcode.sh スクリプトを実行します。このスクリプトは、3 つの動画ファイルの 1 つをエンコードし、それを Cloud Storage バケットにアップロードします。

ジョブをモニタリングする

  1. Google Cloud コンソールで、[ジョブリスト] ページに移動します。

    ジョブリストに移動する

  2. [ジョブ名] 列で [コード変換] をクリックします。

    ジョブの詳細ページが開きます。

  3. [イベント] タブをクリックします。

    [イベントのリスト] セクションで、transcode ジョブのステータスをモニタリングできます。ジョブのキューイング、スケジューリング、実行が完了するまでにかかる時間は、さまざまな要因によって変わります。この例では、ジョブがすべて完了するまでに約 5 分かかると想定しています。

  4. 省略可: ページを更新するには、 [更新] をクリックします。

次のステップに進む前に、ジョブのステータスが [完了] に設定されていることを確認します。ジョブが失敗した場合は、トラブルシューティングをご覧ください。

エンコードされた動画を表示する

  1. Google Cloud コンソールの [バケット] ページに移動します。

    [バケット] に移動

  2. [名前] 列で [BUCKET_NAME] をクリックします。

    [バケットの詳細] ページが開きます。

  3. [名前] 列で [output/] をクリックし、エンコードされた動画ファイルのいずれかをクリックします。

    [オブジェクトの詳細] ページが開きます。

  4. エンコードされた動画を表示するには、[プレビュー]、 [再生] の順にクリックします。

クリーンアップ

このページで使用したリソースについて、 Google Cloud アカウントに課金されないようにするには、Google Cloud プロジェクトとそのリソースをまとめて削除してください。

プロジェクトの削除

課金をなくす最も簡単な方法は、このチュートリアルで使用したプロジェクトを削除することです。

Delete a Google Cloud project:

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

次のステップ