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 | 發生未知的排程錯誤。 |