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

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. 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.comcompute.googleapis.comlogging.googleapis.comstorage.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.comcompute.googleapis.comlogging.googleapis.comstorage.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. 省略可: ページを更新するには、 [更新] をクリックします。

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

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

  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 リポジトリを削除する

このチュートリアルでクローンを作成した git リポジトリが不要になった場合は、削除できます。

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

次のステップ