サンプルジョブを作成して実行する
Batch でサンプルの動画コード変換ジョブを作成して実行する方法について説明します。
このタスクを Google Cloud コンソールで直接行う際の順を追ったガイダンスについては、「ガイドを表示」をクリックしてください。
準備
- Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
- Google Cloud CLI をインストールします。
-
gcloud CLI を初期化するには:
gcloud init
-
Google Cloud プロジェクトを作成または選択します。
-
Google Cloud プロジェクトを作成する
gcloud projects create PROJECT_ID
-
作成した Google Cloud プロジェクトを選択します。
gcloud config set project PROJECT_ID
-
-
Batch, Compute Engine, Logging and Cloud Storage API を有効にします。
gcloud services enable batch.googleapis.com
compute.googleapis.com logging.googleapis.com storage.googleapis.com - Google Cloud CLI をインストールします。
-
gcloud CLI を初期化するには:
gcloud init
-
Google Cloud プロジェクトを作成または選択します。
-
Google Cloud プロジェクトを作成する
gcloud projects create PROJECT_ID
-
作成した Google Cloud プロジェクトを選択します。
gcloud config set project PROJECT_ID
-
-
Batch, Compute Engine, Logging and Cloud Storage API を有効にします。
gcloud services enable batch.googleapis.com
compute.googleapis.com logging.googleapis.com storage.googleapis.com -
自分とジョブのサービス アカウントに、このチュートリアルを完了するために必要な権限があることを確認してください。このチュートリアルでは、ジョブにデフォルトのサービス アカウントである Compute Engine のデフォルトのサービス アカウントを使用します。
-
このチュートリアルを完了するために必要な権限を取得するには、管理者に次の IAM ロールを付与するよう依頼してください。
-
ジョブを作成、表示、削除するには:
-
プロジェクトのバッチジョブ編集者(
roles/batch.jobsEditor
) -
Compute Engine のデフォルトのサービス アカウントに対するサービス アカウント ユーザー (
roles/iam.serviceAccountUser
)
-
プロジェクトのバッチジョブ編集者(
-
Cloud Storage バケットを作成、表示、削除するには: プロジェクトのストレージ管理者 (
roles/storage.admin
) -
ジョブのログを表示するには: プロジェクトのログビューア (
roles/logging.viewer
)
ロールの付与の詳細については、アクセスの管理をご覧ください。
-
ジョブを作成、表示、削除するには:
-
このチュートリアルを完了するために必要な権限を Compute Engine のデフォルト サービス アカウントに付与するには、Compute Engine のデフォルト サービス アカウントに次の IAM ロールを付与するように管理者へ依頼してください。
-
プロジェクトに対するバッチ エージェント報告者(
roles/batch.agentReporter
) -
ジョブが Cloud Storage バケットにアクセスできるようにするには:
プロジェクトにおけるストレージ管理者 (
roles/storage.admin
) -
ジョブが Logging でログを生成できるようにするには:
プロジェクトに対するログ書き込み (
roles/logging.logWriter
)
-
プロジェクトに対するバッチ エージェント報告者(
-
-
Batch git リポジトリのクローンを現在のディレクトリに作成します。
git clone https://github.com/GoogleCloudPlatform/batch-samples.git
-
transcoding
ディレクトリに移動します。cd batch-samples/transcoding/
ジョブ入力を準備する
Cloud Storage バケットを作成します。
gcloud storage buckets create gs://BUCKET_NAME
BUCKET_NAME
をバケットのグローバルに一意の名前に置き換えます。出力は次のようになります。
Creating gs://BUCKET_NAME/...
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
ジョブの作成
任意のテキスト エディタで、
job.json
構成ファイルを開きます。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" } }
変更を保存し、テキスト エディタを終了します。
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 バケットにアップロードします。
ジョブをモニタリングする
Google Cloud コンソールで、[ジョブリスト] ページに移動します。
[ジョブ名] 列で、[トランスコード] をクリックします。
ジョブの詳細ページが開きます。
[イベント] タブをクリックします。
[イベントリスト] セクションで、
transcode
ジョブのステータスをモニタリングできます。ジョブのキューイング、スケジュール、実行の完了までの時間は、複数の要因によって異なります。この例では、ジョブがすべて約 5 分で完了すると期待できます。省略可: ページを更新するには、
[更新] をクリックします。
次のステップに進む前に、ジョブのステータスが Succeeded に設定されていることを確認します。ジョブが失敗した場合は、代わりにトラブルシューティングをご覧ください。
エンコードされた動画を表示する
Google Cloud コンソールの [バケット] ページに移動します。
[名前] 列で、[BUCKET_NAME] をクリックします。
[バケットの詳細] ページが開きます。
[名前] 列で
[output/] をクリックしてから、エンコードされた動画ファイルのいずれかをクリックします。[オブジェクトの詳細] ページが開きます。
エンコードされた動画を表示するには、[プレビュー] をクリックし、
[再生] をクリックします。
クリーンアップ
このページで使用したリソースについて、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 リポジトリを削除する
このチュートリアルでクローンを作成した git リポジトリが不要になった場合は、削除できます。
cd ../../ && rm -rf batch-samples
次のステップ
Batch の使用方法を学習する。
ジョブの作成と実行についてさらに学習する。