BatchJobPreparationTask interface
在任何指定計算節點上作業的任何工作之前,要執行的作業準備工作。 您可以使用作業準備來準備節點以執行作業的工作。 作業準備中通常執行的活動包括:下載作業中所有工作所使用的通用資源檔。 作業準備工作可以將這些通用資源檔下載到節點上的共用位置。 (AZ_BATCH_NODE_ROOT_DIR\shared),或啟動節點上的本地服務,讓該作業的所有工作都可以與其通訊。 如果作業準備工作失敗(也就是說,在結束代碼 0 之前耗盡重試計數),Batch 將不會在節點上執行此作業的工作。 計算節點仍無法執行此作業的工作,直到重新製作映像為止。 計算節點會維持使用中狀態,並可用於其他作業。 作業準備工作可以在相同的節點上執行多次。 因此,您應該撰寫作業準備工作來處理重新執行。 如果節點重新啟動,作業準備工作會在排程作業的任何其他工作之前,於計算節點上再次執行,如果 rerunOnNodeRebootAfterSuccess 為 true,或作業準備工作先前未完成。 如果重新製作節點映像,作業準備工作會在排程作業的任何工作之前再次執行。 批次會在節點上觸發復原作業時重試工作。 復原作業的範例包括當狀況不良的節點重新啟動或計算節點因主機失敗而消失時,包括 (但不限於) 。 由於復原作業的重試與 無關,而且不會計入 maxTaskRetryCount。 即使 maxTaskRetryCount 是 0,由於復原作業,可能會發生內部重試。 因此,所有工作都應該是等冪的。 這表示工作必須容許中斷並重新啟動,而不會造成任何損毀或重複的數據。 長時間執行工作的最佳做法是使用某種形式的檢查點。
屬性
| command |
工作準備任務的指令列。 命令行不會在殼層下執行,因此無法利用殼層功能,例如環境變數擴充。 如果你想利用這些功能,應該在命令列中呼叫 shell,例如在 Windows 中使用「cmd /c MyCommand」,或在 Linux 中使用「/bin/sh -c MyCommand」。 如果命令行參考檔案路徑,它應該使用相對路徑(相對於Task工作目錄),或使用 Batch 提供的環境變數 (https://learn.microsoft.com/azure/batch/batch-compute-node-environment-variables)。 |
| constraints | 適用於工作準備任務的限制條件。 |
| container |
工作準備任務所處容器的設定。 當指定此條件時,所有位於AZ_BATCH_NODE_ROOT_DIR(節點上Azure Batch目錄根節點)下方的目錄會遞迴地映射到容器中,所有任務環境變數也映射到容器中,任務命令列則在容器中執行。 容器中產生的檔案可能不會被反映到主機磁碟AZ_BATCH_NODE_ROOT_DIR,導致批次檔案 API 無法存取這些檔案。 |
| environment |
工作準備任務的環境變數設定清單。 |
| id | 一個字串,唯一識別工作中的工作準備任務。 ID 可包含任意組合的字母數字,包括連字號和底線,且最多可包含 64 個字元。 若未指定此屬性,批次服務會預設值為「工作準備」。 工作中沒有其他任務可以擁有與工作準備任務相同的 ID。 如果你嘗試提交相同 ID 的任務,批次服務會以錯誤代碼 TaskIdSameAsJobPreparationTask 拒絕該請求;如果你直接呼叫 REST API,HTTP 狀態碼是 409(衝突)。 |
| rerun |
批次服務是否應該在運算節點重啟後重執行工作準備任務。 如果運算節點被重新映像化,或工作準備任務未完成(例如因為重啟發生在任務執行中),工作準備任務總是會重新執行。 因此,你應該總是寫出一個工作準備任務,使其具有冪性且多次執行時行為正確。 預設值為 True。 |
| resource |
Batch 服務在執行命令行之前,會先下載至計算節點的檔案清單。 此元素底下列出的檔案位於工作的工作目錄中。 資源檔案清單的大小上限。 超過大小上限時,要求將會失敗,而回應錯誤碼會是 RequestEntityTooLarge。 如果發生這種情況,ResourceFiles 的集合必須縮小大小。 這可以使用 .zip 檔案、應用程式套件或 Docker 容器來達成。 |
| user |
工作準備任務所依據的使用者身份。 若省略,該任務將以非管理使用者身份執行,該使用者在 Windows 運算節點上是任務獨有,或作為非管理使用者,僅在 Linux 計算節點的池中獨有。 |
| wait |
批次服務是否應該等待工作準備任務成功完成後,再排程該工作的其他任務到計算節點。 若工作準備任務以出口代碼0退出,則該任務即告成功完成。 若為真且作業準備任務在節點上失敗,批次服務會重試該任務至最大重試次數(依約束元素所規定)。 如果任務在所有重試後仍未成功完成,則批次服務將不會將該工作的任務排程到該節點。 節點保持活躍狀態,並有資格執行其他作業的任務。 若為錯誤,批次服務不會等待工作準備任務完成。 此時,工作的其他任務可以在工作準備任務仍在執行時開始在計算節點執行;即使工作準備任務失敗,新的任務仍會持續在計算節點排程。 預設值為 True。 |
屬性詳細資料
commandLine
工作準備任務的指令列。 命令行不會在殼層下執行,因此無法利用殼層功能,例如環境變數擴充。 如果你想利用這些功能,應該在命令列中呼叫 shell,例如在 Windows 中使用「cmd /c MyCommand」,或在 Linux 中使用「/bin/sh -c MyCommand」。 如果命令行參考檔案路徑,它應該使用相對路徑(相對於Task工作目錄),或使用 Batch 提供的環境變數 (https://learn.microsoft.com/azure/batch/batch-compute-node-environment-variables)。
commandLine: string
屬性值
string
constraints
containerSettings
工作準備任務所處容器的設定。 當指定此條件時,所有位於AZ_BATCH_NODE_ROOT_DIR(節點上Azure Batch目錄根節點)下方的目錄會遞迴地映射到容器中,所有任務環境變數也映射到容器中,任務命令列則在容器中執行。 容器中產生的檔案可能不會被反映到主機磁碟AZ_BATCH_NODE_ROOT_DIR,導致批次檔案 API 無法存取這些檔案。
containerSettings?: BatchTaskContainerSettings
屬性值
environmentSettings
id
一個字串,唯一識別工作中的工作準備任務。 ID 可包含任意組合的字母數字,包括連字號和底線,且最多可包含 64 個字元。 若未指定此屬性,批次服務會預設值為「工作準備」。 工作中沒有其他任務可以擁有與工作準備任務相同的 ID。 如果你嘗試提交相同 ID 的任務,批次服務會以錯誤代碼 TaskIdSameAsJobPreparationTask 拒絕該請求;如果你直接呼叫 REST API,HTTP 狀態碼是 409(衝突)。
id?: string
屬性值
string
rerunOnNodeRebootAfterSuccess
批次服務是否應該在運算節點重啟後重執行工作準備任務。 如果運算節點被重新映像化,或工作準備任務未完成(例如因為重啟發生在任務執行中),工作準備任務總是會重新執行。 因此,你應該總是寫出一個工作準備任務,使其具有冪性且多次執行時行為正確。 預設值為 True。
rerunOnNodeRebootAfterSuccess?: boolean
屬性值
boolean
resourceFiles
Batch 服務在執行命令行之前,會先下載至計算節點的檔案清單。 此元素底下列出的檔案位於工作的工作目錄中。 資源檔案清單的大小上限。 超過大小上限時,要求將會失敗,而回應錯誤碼會是 RequestEntityTooLarge。 如果發生這種情況,ResourceFiles 的集合必須縮小大小。 這可以使用 .zip 檔案、應用程式套件或 Docker 容器來達成。
resourceFiles?: ResourceFile[]
屬性值
userIdentity
工作準備任務所依據的使用者身份。 若省略,該任務將以非管理使用者身份執行,該使用者在 Windows 運算節點上是任務獨有,或作為非管理使用者,僅在 Linux 計算節點的池中獨有。
userIdentity?: UserIdentity
屬性值
waitForSuccess
批次服務是否應該等待工作準備任務成功完成後,再排程該工作的其他任務到計算節點。 若工作準備任務以出口代碼0退出,則該任務即告成功完成。 若為真且作業準備任務在節點上失敗,批次服務會重試該任務至最大重試次數(依約束元素所規定)。 如果任務在所有重試後仍未成功完成,則批次服務將不會將該工作的任務排程到該節點。 節點保持活躍狀態,並有資格執行其他作業的任務。 若為錯誤,批次服務不會等待工作準備任務完成。 此時,工作的其他任務可以在工作準備任務仍在執行時開始在計算節點執行;即使工作準備任務失敗,新的任務仍會持續在計算節點排程。 預設值為 True。
waitForSuccess?: boolean
屬性值
boolean