タスクのタイムアウトを設定する(ジョブ)

デフォルトでは、各タスクは最大 10 分間実行されます。この時間を短くしたり、長くすることができます(最長 24 時間まで)。

このページの説明に従って、タスクのタイムアウトを設定します。ジョブの実行に明示的なタイムアウトはありません。すべてのタスクが完了すると、ジョブの実行は完了します。

再試行の場合、タスクの試行ごとにタイムアウトの設定が適用されます。この時間内にタスクが完了しない場合、タスクは停止されます。

単位は時間で指定します。たとえば、10m5s は 10 分 5 秒です。単位を指定しない場合、単位は秒となります。たとえば、値 10 は 10 秒です。

1 時間を超えるタスク タイムアウトの使用

タスクのタイムアウトが 1 時間を超えるジョブでは、メンテナンス イベントが定期的に実施されます。メンテナンス イベント中、進行中のタスクは現在のマシンから別のマシンに移行されます。この移行プロセスで、タスクの全体の状態が保持されます。ただし、タスクの移行中は処理が一時的に停止します。

メンテナンス イベントの監視と処理

メンテナンス イベントは透過的です。メンテナンス イベントを処理するためにコンテナを変更する必要はありません。タスクの開始と移行が終了するたびに、Cloud Run がログ メッセージを出力します。

ただし、メンテナンス イベントを特定の方法でモニタリングまたは処理する場合は、タスクの 10 秒前に送信された SIGTSTP シグナルをキャッチします。移行後、再起動後すぐにタスクは SIGCONT シグナルを受け取ります。

次の Go サンプルは、これらのシグナルをキャッチしてログエントリを出力する関数です。

func testSignals() {
    sigs := make(chan os.Signal, 1)
    signal.Notify(sigs, syscall.SIGTSTP, syscall.SIGCONT)
    go func() {
        for  {
            sig := <-sigs
            log.Printf("Got Signal: %v", sig)
        }
    }()
 }
 

タスク タイムアウトを設定する

Cloud Run ジョブのタスク タイムアウトを指定するには:

コンソール

  1. Google Cloud コンソールで Cloud Run の [ジョブ] ページに移動します。

    Cloud Run に移動

  2. 新しいジョブを構成する場合は、[ジョブ] タブをクリックし、必要に応じて初期ジョブ設定ページを入力します。既存のジョブを構成する場合は、ジョブをクリックして [編集] をクリックします。

  3. [コンテナ、変数とシークレット、接続、セキュリティ] をクリックして、ジョブのプロパティ ページを開きます。

  4. [全般] タブをクリックします。

    画像

    • 現在のジョブでジョブタスクの最大時間を指定します。ここでは、時間と単位の両方を指定します。たとえば、10m5s は 10 分 5 秒を表します。
  5. [作成] または [更新] をクリックします。

コマンドライン

  1. ジョブを作成する場合:

    gcloud run jobs create JOB_NAME --image IMAGE_URL --task-timeout TIMEOUT

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

    • JOB_NAME: ジョブの名前。
    • IMAGE_URL: コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/job:latest など)。
    • TIMEOUT: ジョブタスクの最大期間。時間と単位を指定します。たとえば、10m5s は 10 分 5 秒です。
  2. ジョブを更新する場合:

    gcloud run jobs update JOB_NAME --task-timeout TIMEOUT

YAML

gcloud run jobs describe --format export コマンドを使用して既存のジョブ構成をダウンロードして表示します。読みやすく整えられた結果が YAML 形式で出力されます。次に、下記のフィールドを変更して、gcloud run jobs replace コマンドで変更後の YAML ファイルをアップロードします。必ず説明されているとおりにフィールドを変更してください。

  1. 次のコマンドで、構成を表示してダウンロードします。

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. timeoutSeconds: 属性を更新します。

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: JOB
    spec:
      template:
        spec:
          template:
            spec:
              containers:
              - image: IMAGE
              timeoutSeconds: TIMEOUT

    TIMEOUT は、ジョブタスクの最大期間で置き換えます。これは時間と単位を指定します。たとえば、10m5s は 10 分 5 秒です。

    環境変数やメモリ上限など他の構成を指定することもできます。

  3. 既存のジョブ構成を更新します。

    gcloud run jobs replace job.yaml

Terraform

Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。

Cloud Run ジョブのタスク タイムアウトを指定するには、google_cloud_run_v2_job リソースを使用して、次のスニペットを main.tf ファイルに適用します。

resource "google_cloud_run_v2_job" "default" {
  name         = "cloud-run-job-timeout"
  location     = "us-central1"
  launch_stage = "BETA"

  template {
    template {
      timeout = "3.500s"

      containers {
        image = "us-docker.pkg.dev/cloudrun/container/job:latest"
      }
    }
  }
}

タスクのタイムアウトの設定を表示する

Cloud Run ジョブのタスク タイムアウトの現在の設定を表示するには:

コンソール

  1. Google Cloud コンソールで Cloud Run の [ジョブ] ページに移動します。

    Cloud Run の [ジョブ] に移動

  2. 目的のジョブをクリックして、[ジョブの詳細] ページを開きます。

  3. [構成] タブをクリックします。

  4. 構成の詳細でタスクのタイムアウト設定を見つけます。

コマンドライン

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

    gcloud run jobs describe JOB_NAME
  2. 返された構成で、タスクのタイムアウトの設定を見つけます。