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

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


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

ガイドを表示


始める前に

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

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

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

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

    プロジェクトを選択または作成するために必要なロール

    • プロジェクトを選択する: プロジェクトの選択には特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトを選択できます。
    • プロジェクトを作成する: プロジェクトを作成するには、プロジェクト作成者ロール (roles/resourcemanager.projectCreator)が必要です。これには resourcemanager.projects.create 権限が含まれています。ロールを付与する方法を確認する
    • プロジェクトを作成します。 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 を有効にするには、 権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。serviceusage.services.enableロールを付与する方法を確認する

    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 ロールは必要ありません。ロールが付与されているプロジェクトを選択できます。
    • プロジェクトを作成する: プロジェクトを作成するには、プロジェクト作成者ロール (roles/resourcemanager.projectCreator)が必要です。これには resourcemanager.projects.create 権限が含まれています。ロールを付与する方法を確認する
    • プロジェクトを作成します。 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 を有効にするには、 権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。serviceusage.services.enableロールを付与する方法を確認する

    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

次のステップ