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

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


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

ガイドを表示


始める前に

  1. Google Cloud アカウントにログインします。 Google Cloudを初めて使用する場合は、 アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. Google Cloud CLI をインストールします。

  3. 外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

  4. gcloud CLI を初期化するには、次のコマンドを実行します。

    gcloud init
  5. Google Cloud プロジェクトを作成または選択します

    プロジェクトの選択または作成に必要なロール

    • プロジェクトを選択する: プロジェクトの選択に特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトであれば、どのプロジェクトでも選択できます。
    • プロジェクトを作成する: プロジェクトを作成するには、resourcemanager.projects.create 権限を含むプロジェクト作成者ロール(roles/resourcemanager.projectCreator)が必要です。詳しくは、ロールを付与する方法をご覧ください。
    • Google Cloud プロジェクトを作成します。

      gcloud projects create PROJECT_ID

      PROJECT_ID は、作成する Google Cloud プロジェクトの名前に置き換えます。

    • 作成した Google Cloud プロジェクトを選択します。

      gcloud config set project PROJECT_ID

      PROJECT_ID は、 Google Cloud プロジェクトの名前に置き換えます。

  6. Google Cloud プロジェクトに対して課金が有効になっていることを確認します

  7. Batch、Compute Engine、Logging、Cloud Storage の各 API を有効にします。

    API を有効にするために必要なロール

    API を有効にするには、serviceusage.services.enable 権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。詳しくは、ロールを付与する方法をご覧ください。

    gcloud services enable batch.googleapis.com compute.googleapis.com logging.googleapis.com storage.googleapis.com
  8. Google Cloud CLI をインストールします。

  9. 外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

  10. gcloud CLI を初期化するには、次のコマンドを実行します。

    gcloud init
  11. Google Cloud プロジェクトを作成または選択します

    プロジェクトの選択または作成に必要なロール

    • プロジェクトを選択する: プロジェクトの選択に特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトであれば、どのプロジェクトでも選択できます。
    • プロジェクトを作成する: プロジェクトを作成するには、resourcemanager.projects.create 権限を含むプロジェクト作成者ロール(roles/resourcemanager.projectCreator)が必要です。詳しくは、ロールを付与する方法をご覧ください。
    • Google Cloud プロジェクトを作成します。

      gcloud projects create PROJECT_ID

      PROJECT_ID は、作成する Google Cloud プロジェクトの名前に置き換えます。

    • 作成した Google Cloud プロジェクトを選択します。

      gcloud config set project PROJECT_ID

      PROJECT_ID は、 Google Cloud プロジェクトの名前に置き換えます。

  12. Google Cloud プロジェクトに対して課金が有効になっていることを確認します

  13. Batch、Compute Engine、Logging、Cloud Storage の各 API を有効にします。

    API を有効にするために必要なロール

    API を有効にするには、serviceusage.services.enable 権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。詳しくは、ロールを付与する方法をご覧ください。

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

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

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

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

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

      • プロジェクトに対するバッチ エージェント報告者 roles/batch.agentReporter
      • ジョブが Cloud Storage バケットにアクセスできるようにするには: プロジェクトに対するストレージ管理者 roles/storage.admin
      • ジョブが Logging でログを生成できるようにするには: プロジェクトに対するログ書き込み roles/logging.logWriter

  15. Batch Git リポジトリのクローンを現在のディレクトリに作成:
    git clone https://github.com/GoogleCloudPlatform/batch-samples.git
  16. 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 プロジェクトを削除します。

プロジェクトを削除する

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

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

次のステップ