依存するジョブのスケジュールを設定する

このドキュメントでは、特定のジョブが成功または失敗するまでスケジュールされないジョブを作成して実行する方法について説明します。ジョブの状態の詳細については、ジョブの作成と実行の概要をご覧ください。

リソース要件が異なるワークロードがある場合は、依存関係のあるジョブを使用して、それぞれが個別の VM を使用するジョブの自動チェーンを作成することを検討してください。たとえば、負荷の少ないオペレーション(データ準備など)とコンピューティング負荷の高いオペレーション(データ処理など)に使用する VM のタイプを分離します。依存ジョブを使用してリソース使用量を最適化することで、費用と割り当て使用量を削減できます。

始める前に

  1. Batch を以前に使用したことがない場合は、Batch を使ってみるを確認し、プロジェクトとユーザーの前提条件を完了して Batch を有効にします。
  2. ジョブの作成に必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。

    ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。

    必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

制限事項

依存ジョブには次の制限があります。

  • 依存するジョブには最大 4 つの依存関係を含めることができます。各依存関係には、一意のジョブ名と、次のいずれかの必須状態を含める必要があります。

    • SUCCEEDED: 成功
    • FAILED: 失敗
    • FINISHED: 成功または失敗
  • 依存関係のあるジョブを作成する場合は、その依存関係ジョブがすべて存在している必要があります。

  • 各依存関係ジョブが必要な状態に入るまで、依存関係ジョブはスケジュール設定済み(SCHEDULED)状態に移行できません。依存関係ジョブが必要な状態に入ることができなくなった場合、依存関係ジョブはスケジュールされずにすぐに失敗します。

依存ジョブを作成する

依存関係のあるジョブを作成するには、次の方法を使用します。

ジョブが依存関係にあることを指定するには、JSON ファイルのメイン本文に dependencies[].items フィールドを含めます。このフィールドは、Key-Value ペアとして指定された 1 つ以上の依存関係をサポートします。

"dependencies": [
  {
    "items": {
      "DEPENDENCY_JOB_NAME": "REQUIRED_STATE"
    }
  }
]

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

  • DEPENDENCY_JOB_NAME: 依存関係ジョブの名前。この依存関係ジョブのスケジュールが許可される前に、必要な状態に達している必要があります。

  • REQUIRED_STATE: 対応する依存関係ジョブに必要な状態。SUCCEEDEDFAILED、または FINISHED のいずれか。

たとえば、3 つの依存関係を持つ依存関係ジョブには、次のような JSON 構成ファイルを含めることができます。

{
  "taskGroups": [
    {
      "taskSpec": {
        "runnables": [
          {
            "script": {
              "text": "echo Hello World! This is task $BATCH_TASK_INDEX."
            }
          }
        ]
      },
      "taskCount": 3
    }
  ],
  "dependencies": [
    {
      "items": {
        "DEPENDENCY_JOB_NAME_1": "REQUIRED_STATE_1",
        "DEPENDENCY_JOB_NAME_2": "REQUIRED_STATE_2",
        "DEPENDENCY_JOB_NAME_3": "REQUIRED_STATE_3"
      }
    }
  ]
}

次のステップ