Cloud Batchを使う
Cloud Batchを使おうとした際のメモ
コンテナイメージの作成
コンテナ化したいモジュール用のDockerfile
を用意して、以下のコマンドを実行する。これによりCloud Buildが実行され、Container Registryにイメージが格納される。
$ gcloud builds submit --region=<region> --tag gcr.io/<project-id>/<tag-name>
# example below
$ gcloud builds submit --region=asia-northeast1 --tag gcr.io/myproject/my-tag
ジョブの作成
バッチの画面より、「作成」ボタンを押下する。
ジョブの定義画面で、先ほど作成したイメージのURLでタスクを作成することを選択し、イメージのURLを入力する。
ジョブの作成画面の最下部の「作成」ボタンを押下すると、ジョブ一覧画面に自動的に遷移し、作成したジョブがキューに格納されていることを確認できる。
今回、Cloud Batch上からCloud Runのコンテナを実行する必要があったため、ジョブを起動するサービスアカウントに「Cloud Run起動元」のロールを付与します。
プロジェクトでBatchを有効にするによれば、
各ジョブでデフォルトで使用されるサービス アカウントは Compute Engine のデフォルトのサービス アカウントですが、ジョブで使用されるサービス アカウントをカスタマイズすることもできます。
とのことなので、該当のサービスアカウントを編集し必要な権限を付与します。
Cloud BatchのモジュールからCloud Runへリクエストを送る際に、IDトークンが必要になる様なので、以下のドキュメントを参考にコードを修正する。
今回、Cloud Batch上からCloud Runのコンテナを実行する必要があったため、ジョブを起動するサービスアカウントに「Cloud Run起動元」のロールを付与します。
プロジェクトでBatchを有効にするによれば、
各ジョブでデフォルトで使用されるサービス アカウントは Compute Engine のデフォルトのサービス アカウントですが、ジョブで使用されるサービス アカウントをカスタマイズすることもできます。
とのことなので、該当のサービスアカウントを編集し必要な権限を付与します。
この状態でCloud Batchを動かしたところ、401エラーとなってしまいました。わからん。
色々調査中に参考になりそうな記事を見つけた。
Cloud BatchからCloud Runを起動することができないので、ひとまずCloud FunctionからCloud Runを起動できないかを試してみる。
これもなぜか401エラーとなる・・