このページでは、Cloud Run ジョブを実行する方法について説明します。ジョブを実行するとジョブ実行が作成されます。ジョブを正常に実行するには、すべてのタスクが正常に完了する必要があります。ジョブを実行すると、Cloud Logging にログが書き込まれ、Cloud Monitoring にモニタリング データが送信されます。
こうしたロギング機能に加え、実行の詳細ペインを使用して、過去 7 日間に発生したすべての実行とともに、最新の 1,000 件のジョブ実行に関する詳細を表示することもできます。古い実行の詳細は削除され、実行の詳細ペインに表示されなくなります。ただし、古い実行のログとモニタリング データは Cloud Logging と Cloud 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 を使用して実行できます。
コンソール
ジョブを実行するには:
目的のジョブを探します。
ジョブをクリックして、[ジョブの詳細] ページを表示します。
[実行] をクリックします。
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 つの入力データのみを処理するジョブがあり、処理する入力の数に基づいてタスクの数をオーバーライドしたい場合。
- ジョブの実行時間が実行によって異なり、ジョブの予想実行時間に基づいてタスクのタイムアウトをオーバーライドしたい場合。
実行のジョブ構成をオーバーライドするには:
コンソール
目的のジョブを探します。
ジョブをクリックして、[ジョブの詳細] ページを表示します。
[編集] ボタンの前にある展開矢印をクリックし、[オーバーライドで実行] をクリックして [オーバーライドを使用して実行] フォームを表示します。
この実行の引数、環境変数、タスク数、タスクのタイムアウト構成を必要に応じて変更し、[実行] をクリックします。
gcloud
次のコマンドを使用します。
gcloud run jobs execute JOB_NAME \ --args ARGS \ --update-env-vars KEY=VALUE>,KEY_N=VALUE_N \ --tasks TASKS \ --task-timeout TIMEOUT
次のように置き換えます。
- JOB_NAME: ジョブの名前。
- ARGS: 目的のジョブ引数。
- KEY と VALUE のペア: 目的の環境変数。
- TASKS: 目的のタスク数。
- 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
次のように置き換えます。
- ACCESS_TOKEN は、ジョブをオーバーライドする IAM 権限を持つアカウントの有効なアクセス トークンに置き換えます。たとえば、gcloud にログインしている場合は、
gcloud auth print-access-token
を使用してアクセス トークンを取得できます。Cloud Run コンテナ インスタンスから、コンテナ インスタンス メタデータ サーバーを使用してアクセス トークンを取得できます。 - JOB_NAME: ジョブの名前。
- ARGS: ジョブ引数。
- KEY と VALUE のペア: 環境変数。
- TASKS: タスク数。
- TIMEOUT: タスク タイムアウト。
- REGION は、ジョブの Google Cloud リージョンに置き換えます。
- PROJECT-ID は、Google Cloud プロジェクト ID に置き換えます。
ジョブ実行をキャンセルする
現在実行中の Cloud Run ジョブ実行を停止するには、キャンセル機能を使用します。ジョブ実行をキャンセルすると、現在のジョブ実行が停止します。キャンセルされた実行のステータスは「キャンセル済み」になります。構成データ、ログ、モニタリング データなどの実行は引き続き表示できます。
ジョブ実行をキャンセルしても、ジョブの実行時間に対する Cloud Run ジョブの費用は返金されません。
実行をキャンセルするには:
コンソール
ジョブをクリックしてジョブの詳細パネルを開きます。
キャンセルするジョブ実行を選択します。
[アクション] メニューで、省略記号アイコンをクリックし、[キャンセル] をクリックします。
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 に置き換えます。
ジョブ実行を削除する
現在実行中であっても、ジョブ実行を削除できます。実行を削除すると、実行が続行されなくなります。詳細については、ジョブ実行を削除するをご覧ください。
次のステップ
ジョブの実行後、次のことができます。