Cloud Run で Go ジョブをビルドして作成する
始める前に
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
Cloud Run Admin API と Cloud Build API を有効にします。
gcloud services enable run.googleapis.com \ cloudbuild.googleapis.com
Cloud Run Admin API を有効にすると、Compute Engine のデフォルトのサービス アカウントが自動的に作成されます。
- Cloud Build がソースを構築できるようにするには、次のコマンドを実行して、Compute Engine のデフォルト サービス アカウントに Cloud Build サービス アカウントのロールを付与します。
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/cloudbuild.builds.builder
PROJECT_NUMBER
は Google Cloud プロジェクト番号に、PROJECT_ID
は Google Cloud プロジェクト ID に置き換えます。プロジェクト ID とプロジェクト番号を確認する方法については、プロジェクトの作成と管理をご覧ください。Compute Engine のデフォルト サービス アカウントへの Cloud Build サービス アカウントのロールの付与は、反映されるまでに数分かかることがあります。
サンプルジョブの作成
Go でジョブを作成するには:
jobs
という名前の新しいディレクトリを作成し、そのディレクトリに移動します。mkdir jobs cd jobs
同じディレクトリに、実際のジョブコードを記述する
main.go
ファイルを作成します。ここに次のサンプル行をコピーします。Cloud Run ジョブを使用すると、実行するタスクの数を指定できます。次のサンプルコードは、組み込みの
CLOUD_RUN_TASK_INDEX
環境変数を使用する方法を示しています。各タスクが、コンテナの 1 つの実行中のコピーを表します。タスクは通常、並行して実行されます。各タスクが独立してデータのサブセットを処理できる場合は、複数のタスクを使用すると便利です。各タスクはインデックスを認識し、
CLOUD_RUN_TASK_INDEX
環境変数に格納されます。組み込みのCLOUD_RUN_TASK_COUNT
環境変数には、ジョブの実行時に--tasks
パラメータを介して指定されたタスクの数が含まれています。このコードは、組み込みの
CLOUD_RUN_TASK_ATTEMPT
環境変数を使用してタスクを再試行する方法を示しています。この変数はタスクの再試行回数を表します。最初の再試行が行われると、この変数に 0 が設定され、--max-retries
になるまで再試行のたびに値が 1 ずつ増加します。このコードでは、再試行のテストやエラーログの生成も行うことができるため、問題の発生箇所を確認できます。
go.mod
ファイルを作成し、次の内容を追加します。
コードが完成し、コンテナにパッケージ化できるようになりました。
ジョブコンテナをビルドして Artifact Registry に送信し、Cloud Run にデプロイする
重要: 以下の説明では、このクイックスタートで使用するプロジェクトのオーナーロールまたは編集者ロールが付与されていることを前提としています。ロールが付与されていない場合は、Cloud Run ソース デベロッパー ロールで、ソースから Cloud Run リソースをデプロイするために必要な権限を確認してください。
このクイックスタートでは、コンテナをビルドして Artifact Registry にアップロードし、ジョブを Cloud Run にデプロイするソースからのデプロイを使用します。
gcloud run jobs deploy job-quickstart \ --source . \ --tasks 50 \ --set-env-vars SLEEP_MS=10000 \ --set-env-vars FAIL_RATE=0.1 \ --max-retries 5 \ --region REGION \ --project=PROJECT_ID
ここで、PROJECT_ID はプロジェクト ID、REGION はリージョンです(例: us-central1
)。パラメータの値は、テスト目的で使用する任意の値に変更できます。SLEEP_MS
は作業をシミュレートし、FAIL_RATE
でタスクの X
% を失敗させます。これにより、並列処理をテストし、失敗したタスクを再試行できます。
Cloud Run でジョブを実行する
作成したジョブを実行するには:
gcloud run jobs execute job-quickstart --region REGION
REGION は、ジョブを作成してデプロイしたときに使用したリージョン(us-central1
など)に置き換えます。
次のステップ
コードソースからコンテナをビルドし、リポジトリに push する方法については、以下をご覧ください。