🙆
Cloud Run Jobs β版を試してみたサマリ 22/06/02
Cloud Run Jobsとは
Cloud RunはWebサーバーなどの持続して稼働するサービスをコンテナで起動するものですが、Cloud Run Jobは、マイグレーションタスクなどの処理をContainerを利用して実行する仕組みです。
Cloud Run Jobsの用途
様々な業務プロセスやDBへの処理などが用途として考えられます。
- DBのマイグレーション
- 毎月のInvoiceの作成
- 数時間毎のDatabaseのクエリー結果の保存
- etc
チュートリアル
Jobの作成と実行までのチュートリアルが記述されていますが、Jobの作成までしか記述されていないようでした。また、ドキュメントで記載されているgcloud beta run jobs
のコマンドがまだサポートされていないのか実行できませんでした。まだGUIなどのサポートもない、というような記述があります。
Gcloudをアップデートして実行したら最後までJobが完了しました。
チュートリアルの流れ
gcloudの設定
その前に
以下のコマンドでgcloudのバージョンをあげておきましょう。gcloud beta run jobsコマンドがあるバージョンが必要です。
gcloud components update
Gcloudで操作対象とするProjectと、Cloud Runのリージョンを設定
PROJECT_ID=[YOUR-PROJECT-ID]
REGION=europe-west9
gcloud config set core/project $PROJECT_ID
gcloud config set run/region $REGION
cloud runのAPIの有効化
gcloud services enable \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com \
run.googleapis.com
サンプルコードのinstall
ウェブサイトのスクリーンショットを保存してcloud bucketに保存するjobを2個並列で実行するチュートリアルです。
git clone https://github.com/GoogleCloudPlatform/jobs-demos.git
cd jobs-demos/screenshot
Containerイメージの作成
// containersという名称の registoryを作成
gcloud artifacts repositories create containers --repository-format=docker --location=$REGION
// containersにサンプルコードのdockerイメージをpush
gcloud builds submit -t $REGION-docker.pkg.dev/$PROJECT_ID/containers/screenshot:v1
Jobの作成
// サービスアカウントを作成
gcloud iam service-accounts create screenshot-sa --display-name="Screenshot app service account"
// サービスアカウントにアクセス権限を付与
gcloud projects add-iam-policy-binding $PROJECT_ID \
--role roles/storage.admin \
--member serviceAccount:screenshot-sa@$PROJECT_ID.iam.gserviceaccount.com
// Jobの作成
gcloud beta run jobs create screenshot \
// ContainersにPushしたイメージを指定
--image=$REGION-docker.pkg.dev/$PROJECT_ID/containers/screenshot:v1 \
// サンプルコードが参照する引数1。第1引数は、1個目のタスクが参照するように設定されている
--args="https://example.com" \
// サンプルコードが参照する引数2。第2引数は、2個目のタスクが参照するように設定されている
--args="https://cloud.google.com" \
// タスクの数。各タスクは、自分が何番目のタスクかを参照する環境変数にアクセスできる。
--tasks=2 \
// タスクのタイムアウト時間。タイムアウトした場合にリトライしたい場合は、リトライ回数を設定するオプションがあるらしい。
--task-timeout=5m \
// taskが参照する環境変数を定義
--set-env-vars=BUCKET_NAME=screenshot-$PROJECT_ID \
// 実行するアカウントを指定
--service-account=screenshot-sa@$PROJECT_ID.iam.gserviceaccount.com
Jobの実行
Jobを作成すると以下のメッセージが出るので、Jobを実行する
To execute this job, use:
gcloud beta run jobs execute screenshot
gcloud beta run jobs execute screenshot
以上でJobの実行まで完了です。
Discussion