排定依附工作

本文說明如何建立及執行工作,並在特定工作成功或失敗後才排定工作。如要進一步瞭解工作狀態,請參閱工作建立和執行總覽

如果工作負載的資源需求各不相同,建議使用相依工作,建立自動化工作鏈,每個工作都使用個別的 VM。舉例來說,您可以將用於低需求作業 (例如資料準備) 和運算密集型作業 (例如資料處理) 的 VM 類型分開。使用相依作業有助於最佳化資源消耗量,進而降低成本和配額用量。

事前準備

  1. 如果您從未使用過 Batch,請參閱「開始使用 Batch」,並完成專案和使用者的必要條件,啟用 Batch。
  2. 如要取得建立作業所需的權限,請要求管理員授予下列 IAM 角色:

    如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

    您或許還可透過自訂角色或其他預先定義的角色取得必要權限。

限制

從屬工作有下列限制:

  • 依附工作最多可有四個依附元件。每個依附元件都必須包含不重複的工作名稱,以及下列其中一個必要狀態:

    • SUCCEEDED:成功
    • FAILED:失敗
    • FINISHED:成功或失敗
  • 建立相依工作時,必須存在所有依附元件工作。

  • 除非每個依附元件工作都進入必要狀態,否則依附元件工作無法進入排定 (SCHEDULED) 狀態。如果依附項工作無法進入必要狀態,依附工作會立即失敗,不會排定時間。

  • 與所有工作一樣,如果工作超過佇列中的等待時間上限,相依工作就無法進入排定 (SCHEDULED) 狀態。Batch 會強制執行這項限制,避免工作過時。因此,如果您預期任何依附元件工作完成所需的時間可能會超過這個限制,請考慮執行下列一或多項操作:

    • 如果尚未建立依附元件工作,請嘗試縮短依附元件工作的預期執行時間。舉例來說,您可以提高工作負載的平行處理程度,或限制任何不需要成功的任務和可執行檔的執行時間
    • 請等到依附元件工作的預期執行時間低於上限,再建立依附元件工作。

建立相依工作

您可以使用下列方法建立依附項工作

如要指定工作為依附元件,請在 JSON 檔案的主體中加入dependencies[].items 欄位,該欄位支援以鍵/值組合形式指定一或多個依附元件:

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

更改下列內容:

  • DEPENDENCY_JOB_NAME:依附項工作的名稱,必須先達到必要狀態,才能排定這個依附項工作。

  • REQUIRED_STATE:對應依附元件工作的必要狀態,必須為 SUCCEEDEDFAILEDFINISHED

舉例來說,具有三個依附元件的依附工作可以有類似下列內容的 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"
      }
    }
  ]
}

後續步驟