サンプルジョブを作成して実行する
Batch でサンプルの動画変換ジョブを作成して実行する方法について説明します。
このタスクを Google Cloud コンソールで直接行う際の順を追ったガイダンスについては、「ガイドを表示」をクリックしてください。
準備
- 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.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
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.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
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 - Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
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.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
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 -
このチュートリアルを完了するために必要な権限が、ユーザーとジョブのサービス アカウントに付与されていることを確認します。このチュートリアルでは、ジョブにデフォルトのサービス アカウント(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] をクリックします。
ジョブの詳細ページが開きます。
[イベント] タブをクリックします。
[イベントのリスト] セクションで、
transcode
ジョブのステータスをモニタリングできます。ジョブのキューイング、スケジューリング、実行が完了するまでにかかる時間は、複数の要因によって異なります。この例では、ジョブがすべて完了するまでに約 5 分かかると想定されます。省略可: ページを更新するには、
[更新] をクリックします。
次のステップに進む前に、ジョブのステータスが Succeeded に設定されていることを確認します。ジョブが失敗した場合は、トラブルシューティングをご覧ください。
エンコードされた動画を表示する
Google Cloud コンソールの [バケット] ページに移動します。
[名前] 列で [BUCKET_NAME] をクリックします。
[バケットの詳細] ページが開きます。
[名前] 列で
[output/] をクリックし、エンコードされた動画ファイルのいずれかをクリックします。[オブジェクトの詳細] ページが開きます。
エンコードされた動画を表示するには、[プレビュー]、
[再生] の順にクリックします。
クリーンアップ
このページで使用したリソースについて、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
次のステップ
詳しくは、Batch の使用を開始する方法をご覧ください。
ジョブの作成と実行の詳細を確認する。