ジョブを実行する

このページでは、Cloud Run ジョブを実行する方法について説明します。ジョブを実行するとジョブ実行が作成されます。ジョブを正常に実行するには、すべてのタスクが正常に完了する必要があります。ジョブを実行すると、Cloud Logging にログが書き込まれ、Cloud Monitoring にモニタリング データが送信されます。

こうしたロギング機能に加え、実行の詳細ペインを使用して、過去 7 日間に発生したすべての実行とともに、最新の 1,000 件のジョブ実行に関する詳細を表示することもできます。古い実行の詳細は削除され、実行の詳細ペインに表示されなくなります。ただし、古い実行のログとモニタリング データは Cloud LoggingCloud Monitoring で引き続き利用できます。これらは、保持ポリシーの対象となります。

必要なロール

このページで説明するオペレーションに必要な権限を取得するには、Cloud Run ジョブに対する次のいずれかの IAM ロールを付与するよう、管理者に依頼してください。

  • Google Cloud CLI を使用してジョブを実行する: Cloud Run ジョブに対する Cloud Run 起動元roles/run.invoker
  • Google Cloud コンソールでジョブの実行、ジョブ構成のオーバーライド、ジョブ実行のキャンセルを行う: Cloud Run ジョブに対する Cloud Run デベロッパーroles/run.developer

Cloud Run に関連付けられている IAM ロールと権限のリストについては、Cloud Run IAM ロールCloud Run IAM 権限をご覧ください。Cloud Run ジョブが Google Cloud APIs(Cloud クライアント ライブラリなど)と連携している場合は、サービス ID の構成ガイドをご覧ください。ロールの付与の詳細については、デプロイ権限アクセスの管理をご覧ください。

ジョブを実行する

ジョブは、Google Cloud コンソールまたは Google Cloud CLI を使用して実行できます。

コンソール

ジョブを実行するには:

  1. [Cloud Run] の [ジョブ] ページに移動します。

  2. 目的のジョブを探します。

  3. ジョブをクリックして、[ジョブの詳細] ページを表示します。

  4. [実行] をクリックします。

gcloud

既存のジョブを実行するには:

gcloud run jobs execute JOB_NAME

実行が完了するまでコマンドを待機させるには、次のコマンドを使用します。

gcloud run jobs execute JOB_NAME --wait --region=REGION

次のように置き換えます。

  • JOB_NAME: ジョブの名前。
  • REGION: リソースが存在するリージョン。または、run/region プロパティを設定します。

クライアント ライブラリ

コードから既存のジョブを実行するには:

REST API

既存のジョブを実行するには、POST HTTP リクエストを jobs.run API メソッドに送信します。

curl の使用例を次に示します。

curl -H "Content-Type: application/json" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -X POST \
  -d '' \
  https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/jobs/JOB-NAME:run

次のように置き換えます。

  • ACCESS_TOKEN は、ジョブを実行する IAM 権限を持つアカウントの有効なアクセス トークンに置き換えます。たとえば、gcloud にログインしている場合は、gcloud auth print-access-token を使用してアクセス トークンを取得できます。Cloud Run コンテナ インスタンスから、コンテナ インスタンス メタデータ サーバーを使用してアクセス トークンを取得できます。
  • JOB-NAME: ジョブの名前。
  • REGION は、ジョブの Google Cloud リージョンに置き換えます。
  • PROJECT-ID は、Google Cloud プロジェクト ID に置き換えます。

ジョブの作成時に直ちにジョブを実行する

コマンドラインを使用する場合は、ジョブを作成した直後にジョブ実行を指定できます。

gcloud run jobs create JOB_NAME --execute-now --region=REGION

特定の実行のジョブ構成をオーバーライドする

ジョブの実行時にジョブに構成されている引数、環境変数、タスク数、タスクのタイムアウトをオーバーライドするには、新しいジョブ実行の開始時にこれらのパラメータを設定します。基になるジョブ定義は変更されないため、指定したパラメータはこの実行にのみ影響し、後続の実行には影響しません。

一般的な使用例は次のとおりです。

  • コードからジョブをプログラムで実行し、引数や環境変数をオーバーライドする場合。たとえば、この実行の入力データがどこにあるかをジョブに指示する場合などです。
  • 各タスクで 1 つの入力データのみを処理するジョブがあり、処理する入力の数に基づいてタスクの数をオーバーライドしたい場合。
  • ジョブの実行時間が実行によって異なり、ジョブの予想実行時間に基づいてタスクのタイムアウトをオーバーライドしたい場合。

実行のジョブ構成をオーバーライドするには:

コンソール

  1. [Cloud Run] の [ジョブ] ページに移動します。

  2. 目的のジョブを探します。

  3. ジョブをクリックして、[ジョブの詳細] ページを表示します。

  4. [編集] ボタンの前にある展開矢印をクリックし、[オーバーライドで実行] をクリックして [オーバーライドを使用して実行] フォームを表示します。

    画像

  5. この実行の引数、環境変数、タスク数、タスクのタイムアウト構成を必要に応じて変更し、[実行] をクリックします。

gcloud

次のコマンドを使用します。

gcloud run jobs execute JOB_NAME \
     --args ARGS \
     --update-env-vars KEY=VALUE>,KEY_N=VALUE_N \
     --tasks TASKS \
     --task-timeout TIMEOUT

次のように置き換えます。

クライアント ライブラリ

コードから既存のジョブを実行するには、ジョブ構成をオーバーライドします。

REST API

既存のジョブのジョブ構成をオーバーライドするには、Cloud Run Admin API の jobs エンドポイントPOST HTTP リクエストを送信します。

curl の使用例を次に示します。

curl -H "Content-Type: application/json" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -X POST \
  -d '{"overrides": {"containerOverrides": [{"args": ["ARGS"], "env": [{"name": "KEY", "value": "VALUE"}]}], "taskCount": TASK-COUNT, "timeout": "TIMEOUT" }}' \
  https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/jobs/JOB-NAME:run

次のように置き換えます。

ジョブ実行をキャンセルする

現在実行中の Cloud Run ジョブ実行を停止するには、キャンセル機能を使用します。ジョブ実行をキャンセルすると、現在のジョブ実行が停止します。キャンセルされた実行のステータスは「キャンセル済み」になります。構成データ、ログ、モニタリング データなどの実行は引き続き表示できます。

ジョブ実行をキャンセルしても、ジョブの実行時間に対する Cloud Run ジョブの費用は返金されません。

実行をキャンセルするには:

コンソール

  1. [Cloud Run] の [ジョブ] ページに移動します。

  2. キャンセルするジョブ実行を見つけます

  3. ジョブの実行をクリックして、実行の詳細ページを表示します。

  4. [キャンセル] をクリックします。

gcloud

次のコマンドを使用します。

gcloud run jobs executions cancel EXECUTION_NAME

EXECUTION_NAME は、実行名に置き換えます。

コマンドから確認が求められたら、「y」と入力してプロンプトに応答します。

クライアント ライブラリ

コードからジョブ実行をキャンセルするには:

REST API

ジョブ実行をキャンセルするには、Cloud Run Admin API の jobs エンドポイントPOST HTTP リクエストを送信します。

curl の使用例を次に示します。

curl -H "Content-Type: application/json" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -X POST \
  -d '' \
  https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/jobs/JOB-NAME/executions/EXECUTION-NAME:cancel

次のように置き換えます。

  • ACCESS_TOKEN は、ジョブ実行をキャンセルする IAM 権限を持つアカウントの有効なアクセス トークンに置き換えます。たとえば、gcloud にログインしている場合は、gcloud auth print-access-token を使用してアクセス トークンを取得できます。Cloud Run コンテナ インスタンスから、コンテナ インスタンス メタデータ サーバーを使用してアクセス トークンを取得できます。
  • JOB_NAME: ジョブの名前。
  • EXECUTION-NAME: ジョブ実行の名前。
  • REGION は、ジョブの Google Cloud リージョンに置き換えます。
  • PROJECT-ID は、Google Cloud プロジェクト ID に置き換えます。

ジョブ実行を削除する

現在実行中であっても、ジョブ実行を削除できます。実行を削除すると、実行が続行されなくなります。詳細については、ジョブ実行を削除するをご覧ください。

次のステップ

ジョブの実行後、次のことができます。