批次狀態和錯誤碼
Batch 服務的 REST API 作業會傳回標準 HTTP 狀態碼,如 HTTP/1.1 狀態碼定義中所定義。
API 作業也會傳回其他錯誤資訊,為開發人員提供錯誤的詳細資訊。 例如,下列錯誤回應指出要求 URI 中所指定的查詢參數無效,並提供有關無效參數的名稱和值以及錯誤原因的其他資訊。
{
"code": "InvalidQueryParameterValue",
"message": {
"lang": "en-us",
"value": "Value for one of the query parameters specified in the request URI is invalid"
},
"values": [{
"key": "QueryParameterName",
"value": "state"
}, {
"key": "QueryParameterValue",
"value": "deleted"
}, {
"key": "Reason",
"value": "invalid state"
}]
}
下列各節提供批次服務的錯誤碼清單:
常見的 REST 應用程式開發介面錯誤碼
下表列出的錯誤碼可能是由批次服務執行的作業所傳回。
錯誤碼 | HTTP 狀態碼 | 使用者訊息 |
---|---|---|
ConditionNotMet | 未修改 (304) | 不符合條件式標頭中所指定的條件,因此無法進行讀取作業。 |
MissingRequiredHeader | 不正確的要求 (400) | 未指定必要的 HTTP 標頭。 |
MissingRequiredProperty | 不正確的要求 (400) | 未在要求主體中指定必要的屬性。 |
UnsupportedHeader | 不正確的要求 (400) | 不支援要求中所指定的其中一個 HTTP 標頭。 |
UnsupportedProperty | 不正確的要求 (400) | 不支援要求主體中所指定的其中一個屬性。 |
InvalidHeaderValue | 不正確的要求 (400) | 其中一個 HTTP 標頭提供之值的格式不正確。 |
InvalidPropertyValue | 不正確的要求 (400) | 對於要求主體中的其中一個屬性提供的值無效。 |
MissingRequiredQueryParameter | 不正確的要求 (400) | 此要求未指定必要的查詢參數。 |
UnsupportedQueryParameter | 不正確的要求 (400) | 不支援要求 URI 中所指定的其中一個查詢參數。 |
InvalidQueryParameterValue | 不正確的要求 (400) | 要求 URI 中的其中一個查詢參數所指定的值無效。 |
OutOfRangeQueryParameterValue | 不正確的要求 (400) | 要求 URI 中指定的查詢參數超出允許的範圍。 |
RequestUrlFailedToParse | 不正確的要求 (400) | 無法剖析要求中的 URL。 |
InvalidUri | 不正確的要求 (400) | 要求的 URI 不代表伺服器上的任何資源。 |
InvalidHttpVerb | 不正確的要求 (400) | 伺服器無法辨識指定的 HTTP 動詞命令。 |
EmptyMetadataKey | 不正確的要求 (400) | 其中一個中繼資料索引鍵/值組的索引鍵為空白。 |
InvalidRequestBody | 不正確的要求 (400) | 指定的要求主體所用的語法無效。 |
OutOfRangeInput | 不正確的要求 (400) | 其中一個要求輸入超出範圍。 |
InvalidAuthenticationInfo | 不正確的要求 (400) | 驗證資訊未以正確格式提供。 確認 授權 標頭的值。 |
InvalidInput | 不正確的要求 (400) | 其中一個要求輸入無效。 |
InvalidMetadata | 不正確的要求 (400) | 指定的中繼資料無效。 其中包含不允許的字元。 |
MetadataTooLarge | 不正確的要求 (400) | 指定的中繼資料大小超過允許的大小上限。 |
MultipleConditionHeadersNotSupported | 不正確的要求 (400) | 不支援多個條件式標頭。 |
AuthenticationFailed | 禁止 (403) | 伺服器無法驗證要求。 確認 授權 標頭的值正確形成,並包含簽章。 |
InsufficientAccountPermissions | 禁止 (403) | 存取的帳戶沒有足夠的權限執行這項作業。 |
AccountIsDisabled | 禁止 (403) | 已停用指定的帳戶。 |
ResourceNotFound | 找不到 (404) | 指定的資源不存在。 |
UnsupportedHttpVerb | 不允許的方法 (405) | 資源不支援指定的 HTTP 動詞命令。 |
MissingContentLengthHeader | 必要的長度 (411) | 未指定 Content-Length 標頭。 |
ConditionNotMet | 先決條件失敗 (412) | 不符合條件式標頭中所指定的條件,因此無法進行寫入作業。 |
RequestBodyTooLarge | 要求實體太大 (413) | 要求主體的大小超過允許的大小上限。 |
InvalidRange | 無法滿足的要求範圍 (416) | 指定的範圍對於資源的目前大小無效。 |
InternalError | 內部伺服器錯誤 (500) | 伺服器發生內部錯誤。 請重試要求。 |
OperationTimedOut | 內部伺服器錯誤 (500) | 無法在允許的時間內完成作業。 |
ServerBusy | 服務無法使用 (503) | 伺服器目前無法接收要求。 請重試您的要求。 |
批次服務錯誤碼
下表列出的錯誤碼可能是由批次服務執行的作業所傳回。
錯誤碼 | HTTP 狀態碼 | 使用者訊息 |
---|---|---|
UnsupportedRequestVersion | BadRequest (400) | 不支援指定的要求版本。 |
InvalidAutoScalingSettings | BadRequest (400) | 指定的自動調整設定無效。 |
AutoScalingFormulaSyntaxError | BadRequest (400) | 指定的自動調整公式中有語法錯誤。 |
AutoScalingFormulaTooLong | BadRequest (400) | 指定的自動調整公式超過長度限制。 |
OSVersionNotFound | BadRequest (400) | 指定的作業系統版本不存在。 |
OSVersionDisabled | BadRequest (400) | 指定的作業系統版本已停用。 |
OSVersionExpired | BadRequest (400) | 指定的作業系統版本已過期。 |
PoolVersionEqualsUpgradeVersion | BadRequest (400) | 集區已經有指定的版本。 |
PoolNotEligibleForOSVersionUpgrade | BadRequest (400) | 指定的集區不適用於作業系統版本升級。 |
PoolNotFound | 找不到 (404) | 指定的集區不存在。 |
NodeNotFound | 找不到 (404) | 指定的節點不存在。 |
JobScheduleNotFound | 找不到 (404) | 指定的作業排程不存在。 |
JobNotFound | 找不到 (404) | 指定的作業不存在。 |
TaskNotFound | 找不到 (404) | 指定的工作不存在。 |
FileNotFound | 找不到 (404) | 指定的檔案不存在。 |
NodeUserNotFound | 找不到 (404) | 指定的節點使用者不存在。 |
CertificateNotFound | 找不到 (404) | 指定的憑證不存在。 |
JobPreparationTaskNotRunOnNode | 找不到 (404) | 作業準備工作未在指定的節點上執行。 |
JobReleaseTaskNotRunOnNode | 找不到 (404) | 作業發行工作未在指定的節點上執行。 |
NodeAgentSKUNotFound | 找不到 (404) | 指定的節點代理程式 SKU 不存在。 |
OperationInvalidForCurrentState | 衝突 (409) | 指定的作業對於資源的目前狀態無效。 |
PoolBeingDeleted | 衝突 (409) | 指定的集區已標示為刪除,而且正在回收。 |
PoolBeingResized | 衝突 (409) | 指定的集區正在調整大小 |
PoolBeingCreated | 衝突 (409) | 正在建立指定的集區。 |
NodeBeingCreated | 衝突 (409) | 正在建立指定的節點 |
NodeBeingStarted | 衝突 (409) | 正在啟動指定的節點 |
NodeBeingReimaged | 衝突 (409) | 正在重新製作指定的節點映射 |
NodeBeingRebooted | 衝突 (409) | 正在重新開機指定的節點 |
NodeStateUnusable | 衝突 (409) | 指定節點的狀態無法使用 |
JobScheduleBeingTerminated | 衝突 (409) | 正在終止指定的作業排程。 |
JobScheduleBeingDeleted | 衝突 (409) | 指定的作業排程已標示為要刪除,且正在回收。 |
CertificateBeingDeleted | 衝突 (409) | 指定的憑證已標示為刪除,而且正在刪除。 |
PoolExists | 衝突 (409) | 指定的集區已經存在。 |
JobScheduleExists | 衝突 (409) | 指定的作業排程已經存在。 |
NodeUserExists | 衝突 (409) | 指定的節點使用者已經存在。 |
JobExists | 衝突 (409) | 指定的作業已經存在。 |
NodeUserExists | 衝突 (409) | 指定的節點使用者已經存在。 |
CertificateExists | 衝突 (409) | 指定的憑證已經存在。 |
JobScheduleDisabled | 衝突 (409) | 指定的作業排程已停用。 |
JobScheduleCompleted | 衝突 (409) | 指定的作業排程已經處於已完成狀態。 |
JobBeingTerminated | 衝突 (409) | 指定的作業正在終止。 |
JobBeingDeleted | 衝突 (409) | 指定的作業已標示為刪除,而且正在進行記憶體回收。 |
JobDisabled | 衝突 (409) | 指定的作業已停用。 |
JobCompleted | 衝突 (409) | 指定的作業處於已完成狀態。 |
JobNotActive | 衝突 (409) | 指定的作業不處於作用中狀態。 |
TaskExists | 衝突 (409) | 指定的工作已經存在。 |
TaskCompleted | 衝突 (409) | 指定的工作處於已完成狀態。 |
TaskNotCompleted | 衝突 (409) | 指定的工作不是處於已完成狀態,而且要求的作業只能在已完成的工作上執行。 |
TaskSucceeded | 衝突 (409) | 指定的工作已經順利完成,而且無法對成功的工作執行所要求的作業。 |
TaskFilesUnavailable | 衝突 (409) | 指定工作的檔案無法使用。 |
TaskFilesCleanedup | 衝突 (409) | 指定工作的檔案已清除。 |
ActiveJobAndScheduleQuotaReached | 衝突 (409) | 已達到帳戶的作用中作業和排程配額。 |
PoolQuotaReached | 衝突 (409) | 已達到帳戶的集區配額。 |
UpgradePoolVersionConflict | 衝突 (409) | 集區正在升級至不同版本。 |
JobPreparationTaskNotSpecified | 衝突 (409) | 指定的作業沒有作業準備工作。 |
JobReleaseTaskNotSpecified | 衝突 (409) | 指定的作業沒有作業發行工作。 |
TaskIdSameAsJobPreparationTask | 衝突 (409) | 指定的工作識別碼與作業準備工作相同。 |
TaskIdSameAsJobReleaseTask | 衝突 (409) | 指定的工作識別碼與作業發行工作相同。 |
JobWithSameIdExists | 衝突 (409) | 具有指定之作業排程識別碼的作業存在。 作業和作業排程不能有相同的識別碼。 |
JobScheduleWithSameIdExists | 衝突 (409) | 具有指定之作業識別碼的作業排程存在。 作業和作業排程不能有相同的識別碼。 |
NodeAlreadyInTargetSchedulingState | 衝突 (409) | 指定的節點已經處於目標排程狀態。 |
OperationNotValidOnNode | 衝突 (409) | 指定的作業在節點上無效。 |
OperationNotValidOnPool | 衝突 (409) | 指定的作業在集區上無效。 |
IOError | 禁止 (403) | 存取指定的資源時發生 I/O 錯誤。 |
TooManyEnableAutoScaleRequests | ServiceUnavailable (503) | 集區上發出太多啟用集區自動調整要求。 |
ApplicationNotFound | 找不到 (404) | 指定的應用程式不存在。 |
InvalidApplicationPackageReferences | 衝突 (409) | 無法滿足一或多個應用程式套件參考。 如果應用程式識別碼或版本不存在或未使用中,或參考未指定版本,且未設定預設版本,就會發生這種情況。 |
TaskDependenciesNotSpecifiedOnJob | 不正確的要求 (400) | 工作已指定為視其他工作而定,但作業未指定使用工作相依性。 |
TaskDependencyListTooLong | 不正確的要求 (400) | 工作已指定為相依于其他工作,但相依性清單太長而無法儲存。 儲存長度總計限制為 64000 個字元;工作識別碼的總長度必須稍微小於此長度,以允許內部儲存體額外負荷。 如果您遇到此錯誤,請考慮改用工作範圍相依性。 |
TaskDependencyRangesTooLong | 不正確的要求 (400) | 工作指定為取決於工作識別碼的多個範圍,而範圍清單太長而無法儲存。 請注意,問題不是範圍大小,而是範圍數目。 |
作業/工作排程錯誤碼
如果 Batch 服務在節點上啟動工作時發生錯誤,它會將工作標示為已完成。 錯誤資訊會在 [列出與工作相關聯的檔案] 和 [取得工作 API的相關資訊] 的回應本文中的 元素內 failureInfo
傳回。
同樣地,如果批次服務在啟動作業時發生錯誤,會將作業標示為已完成。 此排程錯誤資訊會在Batch API 中取得作業相關資訊的回應本文中的 元素內 schedulingError
傳回。
下表提供工作排程錯誤類別的清單。
類別 | 描述 |
---|---|
UserError | 使用者提供的工作規格發生錯誤。 |
ServerError | 批次服務出現錯誤,導致無法排程工作。 |
以下是 Batch 服務傳回的前置處理錯誤範例。
{
"preProcessingError": {
"category": "UserError",
"code": "BlobNotFound",
"message": "The specified blob does not exist.",
"values": {
"name": "FilePath",
"value": "myfile.txt"
}
}
}
下表提供 Batch 服務可能傳回的作業排程錯誤碼清單。
錯誤碼 | 類別 | 使用者訊息 |
---|---|---|
InvalidCertificatesInAutoPool | UserError | 自動集區規格中指定的憑證參照無效。 |
AutoPoolCreationFailedWithQuotaReached | UserError | 已達到帳戶的集區配額。 |
InvalidApplicationPackageReferencesInAutoPool | UserError | 針對集區指定的一或多個應用程式套件無效。 |
InvalidAutoScaleFormulaInAutoPool | UserError | 指定的自動調整設定無效。 |
InvalidAutoPoolSettings | UserError | 指定的自動緩衝處理設定無效。 |
JobBeingTerminated | UserError | 無法啟動工作,因為相關聯的作業正在終止。 |
Unknown | ServerError | 發生未知的排程錯誤。 |
下表提供 Batch 服務可能傳回的工作排程錯誤碼清單。
錯誤碼 | 類別 | 使用者訊息 |
---|---|---|
BlobNotFound | UserError | 找不到其中一個指定的 Azure Blob () 。 |
BlobAccessDenied | UserError | 拒絕其中一個指定的 Azure Blob () 存取。 |
BlobDownloadTimedOut | ServerError | 下載其中一個指定的 Azure Blob () 時發生逾時。 |
BlobDownloadMiscError | ServerError | 下載其中一個指定的 Azure Blob 時發生其他錯誤, (s) 。 |
ResourceDirectoryCreateFailed | ServerError | 工作建立資原始目錄失敗。 |
ResourceFileCreateFailed | ServerError | 建立資源檔時發生失敗。 |
ResourceFileWriteFailed | ServerError | 寫入資源檔失敗。 |
CommandProgramNotFound | UserError | 找不到指定的命令程式。 |
CommandLaunchFailed | UserError | 無法啟動指定的命令列。 |
TaskEnded | UserError | 工作已由使用者要求結束。 |
MaxInternalRetryCountReached | UserError | 指定的工作已達到內部重試計數上限。 |
TaskSchedulingConstraintFailed | UserError | 工作無法在與作業相關聯的集區上排程 |
DiskFull | ServerError | 選取的節點上沒有足夠的磁碟空間來執行工作。 |
Unknown | ServerError | 發生未知的排程錯誤。 |