Written by
izumiiii
on
on
Cloud Run Jobs, Workflows, Cloud Schedulerで手軽に始めるCronJob
Cloud Run Jobs について
Cloud Run Jobs は Cloud Run 上でバッチ処理できる機能です。
Cloud Storage でのファイル処理、リクエストを処理しないコンテナなどに向いています。
また、今まで GCP 環境においてバッチ処理となると GKE の CronJob、GCE と選択肢が少ないため、気軽にバッチ処理環境を用意できる Cloud Run Jobs はその点においても強みです。
Cloud Run との機能の違いは下記ものがあります。
- タスクタイムアウト最大 1 時間伸ばすことができる
- 明示的に並列処理を実行することができる
- 最大リトライ回数の設定ができる
Cloud Run Jobs のデプロイ
docker build -t asia.gcr.io/xxxx/xxxx .
docker push asia.gcr.io/xxxx/xxxx
gcloud beta run jobs create my-cloudrun-job --image=asia.gcr.io/xxxx/xxxx --set-env-vars=KEY1=VALUE1,KEY2=VALUE2 # envが必要な場合
Workflows のデプロイ
Cloud Run Jobs の使用した Workflows の定義は下記のように行います。
main:
steps:
- my-cloudrun-job:
call: googleapis.run.v1.namespaces.jobs.run
args:
name: "namespaces/project_id/jobs/my-cloudrun-job"
location: asia-northeast1
- finish:
return: "OK"
※複数の Cloud Run Jobs も設定可能です。
Workflows の定義が終わったら、デプロイを行います。
この時に指定するサービスアカウントの IAMRole に CloudRun の実行できる Role を追加してあることを確認してください。
実行権限ない場合、Workflows を実行しても 403 エラーで失敗してしまいます。
gcloud workflows deploy my-cloudrun-job-workflow --source=my-workflow.yml --location=asia-northeast1 --service-account=my-account@my-project.iam.gserviceaccount.com
Cloud Scheduler の設定
gcloud scheduler jobs create http my-job --schedule="0 */3 * * *" --uri="https://workflowexecutions.googleapis.com/v1/projects/project_id/locations/asia-northeast1/workflows/my-cloudrun-job-workflow/executions" --http-method=POST
こちらも実行するサービスアカウントに対して Workflows の実行権限があることを確認してください。
まとめ
GKE と違いコマンド少し叩けばサラッとバッチをデプロイできる Cloud Run Jobs はとても便利すね。今後もさらに使い倒していきたいと思います!