Cloud Run での Node.js ジョブのビルドと作成
始める前に
- 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 サービス アカウントに次の IAM ロールを付与します。
ここをクリックして Cloud Build サービス アカウントに必要なロールを表示
この動作をオーバーライドしない限り、Cloud Build は、ソースコードと Cloud Run リソースのビルドにデフォルトの Cloud Build サービス アカウントとして Compute Engine のデフォルトのサービス アカウントを自動的に使用します。Cloud Build がソースをビルドできるようにするには、プロジェクトの Compute Engine のデフォルトのサービス アカウントに Cloud Run ビルダー(
roles/run.builder
)を付与するよう管理者に依頼します。gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/run.builder
PROJECT_NUMBER
は Google Cloudプロジェクト番号に、PROJECT_ID
は Google Cloudプロジェクト ID に置き換えます。プロジェクト ID とプロジェクト番号を確認する方法については、プロジェクトの作成と管理をご覧ください。Compute Engine のデフォルト サービス アカウントに Cloud Run ビルダーのロールを付与すると、反映されるまでに数分かかることがあります。
サンプルジョブの作成
Node.js でジョブを作成するには:
jobs
という名前の新しいディレクトリを作成し、そのディレクトリに移動します。mkdir jobs cd jobs
package.json
ファイルを作成し、次の内容を追加します。同じディレクトリに、実際のジョブコードを記述する
index.js
ファイルを作成します。ここに次のサンプル行をコピーします。Cloud Run ジョブを使用すると、実行するタスクの数を指定できます。次のサンプルコードは、組み込みの
CLOUD_RUN_TASK_INDEX
環境変数を使用する方法を示しています。各タスクが、コンテナの 1 つの実行中のコピーを表します。タスクは通常、並行して実行されます。各タスクが独立してデータのサブセットを処理できる場合は、複数のタスクを使用すると便利です。各タスクはインデックスを認識し、
CLOUD_RUN_TASK_INDEX
環境変数に格納されます。組み込みのCLOUD_RUN_TASK_COUNT
環境変数には、ジョブの実行時に--tasks
パラメータを介して指定されたタスクの数が含まれています。このコードは、組み込みの
CLOUD_RUN_TASK_ATTEMPT
環境変数を使用してタスクを再試行する方法を示しています。この変数はタスクの再試行回数を表します。最初の再試行が行われると、この変数に 0 が設定され、--max-retries
になるまで再試行のたびに値が 1 ずつ増加します。このコードでは、再試行のテストやエラーログの生成も行うことができるため、問題の発生箇所を確認できます。
Procfile
作成し、次の内容を追加します。
コードが完成し、コンテナにパッケージ化できるようになりました。
ジョブコンテナをビルドして 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 する方法については、以下をご覧ください。