Cloud Run で Go ジョブをビルドして作成する
始める前に
- Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
-
Google Cloud プロジェクトの課金が有効になっていることを確認します。詳しくは、プロジェクトで課金が有効になっているかどうかを確認する方法をご覧ください。
- Google Cloud CLI をインストールします。
-
gcloud CLI を初期化するには:
gcloud init
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
-
Google Cloud プロジェクトの課金が有効になっていることを確認します。詳しくは、プロジェクトで課金が有効になっているかどうかを確認する方法をご覧ください。
- Google Cloud CLI をインストールします。
-
gcloud CLI を初期化するには:
gcloud init
サンプルジョブの作成
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
ファイルを作成し、次の内容を追加します。
コードが完成し、コンテナにパッケージ化できるようになりました。
ジョブコンテナをビルドしてリポジトリに送信する
重要: 以下の説明では、このクイックスタートで使用するプロジェクトのオーナーロールまたは編集者ロールが付与されていることを前提としています。このロールが付与されていない場合は、Cloud Run のデプロイ権限、Cloud Build の権限、Artifact Registry の権限で必要な権限を確認してください。
buildpack を使用してコンテナをビルドします。gcloud builds submit --pack image=gcr.io/PROJECT_ID/logger-job
Cloud Run でジョブを作成する
作成したコンテナを使用してジョブを作成するには:
gcloud run jobs create job-quickstart \ --image gcr.io/PROJECT_ID/logger-job \ --tasks 50 \ --set-env-vars SLEEP_MS=10000 \ --set-env-vars FAIL_RATE=0.5 \ --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
リージョンの入力を求められたら、任意のリージョン(us-central1
など)を選択します。
ローカルでテストする
ジョブはローカルで実行できます。
docker run --rm -e FAIL_RATE=0.9 -e SLEEP_MS=1000 gcr.io/PROJECT_ID/logger-jobここで、PROJECT_ID はプロジェクト ID です。
次のステップ
コードソースからコンテナをビルドし、リポジトリに push する方法については、以下をご覧ください。