你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
批状态和错误代码
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 API 错误代码
针对批处理服务的操作可能返回下表中列出的错误代码。
错误代码 | 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) | 提供的身份验证信息格式不正确。 验证 Authorization 标头的值。 |
InvalidInput | 错误的请求 (400) | 某个请求输入无效。 |
InvalidMetadata | 错误的请求 (400) | 指定的元数据无效。 它包含不允许使用的字符。 |
MetadataTooLarge | 错误的请求 (400) | 指定的元数据大小超过允许的最大大小。 |
MultipleConditionHeadersNotSupported | 错误的请求 (400) | 不支持多个条件标头。 |
AuthenticationFailed | 禁止访问 (403) | 服务器无法对请求进行身份验证。 验证 Authorization 标头的值格式是否正确,以及是否包含签名。 |
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) | 指定的 OS 版本不存在。 |
OSVersionDisabled | BadRequest (400) | 指定的 OS 版本已禁用。 |
OSVersionExpired | BadRequest (400) | 指定的 OS 版本已过期。 |
PoolVersionEqualsUpgradeVersion | BadRequest (400) | 池已使用给定的版本。 |
PoolNotEligibleForOSVersionUpgrade | BadRequest (400) | 指定的池不适合进行 OS 版本升级。 |
PoolNotFound | NotFound (404) | 指定的池不存在。 |
NodeNotFound | NotFound (404) | 指定的节点不存在。 |
JobScheduleNotFound | NotFound (404) | 指定的作业计划不存在。 |
JobNotFound | NotFound (404) | 指定的作业不存在。 |
TaskNotFound | NotFound (404) | 指定的任务不存在。 |
FileNotFound | NotFound (404) | 指定的文件不存在。 |
NodeUserNotFound | NotFound (404) | 指定的节点用户不存在。 |
CertificateNotFound | NotFound (404) | 指定的证书不存在。 |
JobPreparationTaskNotRunOnNode | NotFound (404) | 作业准备任务未在指定的节点上运行。 |
JobReleaseTaskNotRunOnNode | NotFound (404) | 作业发布任务未在指定的节点上运行。 |
NodeAgentSKUNotFound | NotFound (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) | 指定的任务 ID 与作业准备任务相同。 |
TaskIdSameAsJobReleaseTask | 冲突 (409) | 指定的任务 ID 与作业发布任务相同。 |
JobWithSameIdExists | 冲突 (409) | 存在具有指定作业计划 ID 的作业。 作业和作业计划不能具有相同的 ID。 |
JobScheduleWithSameIdExists | 冲突 (409) | 存在具有指定作业 ID 的作业计划。 作业和作业计划不能具有相同的 ID。 |
NodeAlreadyInTargetSchedulingState | 冲突 (409) | 指定的节点已处于目标计划状态。 |
OperationNotValidOnNode | 冲突 (409) | 指定的操作在节点上无效。 |
OperationNotValidOnPool | 冲突 (409) | 指定的操作在池中无效。 |
IOError | 禁止访问 (403) | 访问指定的资源时发生 I/O 错误。 |
TooManyEnableAutoScaleRequests | ServiceUnavailable (503) | 在池上发出过多的“启用池自动缩放”请求。 |
ApplicationNotFound | 找不到 (404) | 指定的应用程序不存在。 |
InvalidApplicationPackageReferences | 冲突 (409) | 无法满足一个或多个应用程序包引用。 如果应用程序 ID 或版本不存在或未处于活动状态,或者引用未指定版本且未配置默认版本,则会发生此情况。 |
TaskDependenciesNotSpecifiedOnJob | 错误的请求 (400) | 已将任务指定为依赖于其他任务,但作业未指定它将使用任务依赖项。 |
TaskDependencyListTooLong | 错误的请求 (400) | 已将任务指定为依赖于其他任务,但依赖项列表太长,无法存储。 存储的总长度限制为 64000 个字符:任务 ID 的总长度必须略小于此长度,才能产生内部存储开销。 如果遇到此错误,请考虑改用任务范围依赖项。 |
TaskDependencyRangesTooLong | 错误的请求 (400) | 根据多个任务 ID 范围指定任务,并且范围列表太长,无法存储。 请注意,问题不在于范围的大小,而在于范围的数量。 |
作业/任务计划错误代码
如果 Batch 服务在节点上启动任务时遇到错误,则会将该任务标记为已完成。 错误信息在“列出与任务关联的文件”和“获取有关任务 API 的信息”响应正文的元素内failureInfo
返回。
同样,如果批处理服务在启动作业时遇到错误,会将该作业标记为已完成。 此计划错误信息是在 schedulingError
批处理 API 中 获取作业相关信息 的响应正文的元素内返回的。
下表提供了任务计划错误类别的列表。
类别 | 说明 |
---|---|
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 | 无法启动任务,因为正在终止关联的作业。 |
未知 | ServerError | 发生了未知的计划错误。 |
下表提供了 Batch 服务可能返回的任务计划错误代码列表。
错误代码 | 类别 | 用户消息 |
---|---|---|
BlobNotFound | UserError | 找不到指定的 Azure Blob () 之一。 |
BlobAccessDenied | UserError | 拒绝访问某个指定的 Azure Blob () 。 |
BlobDownloadTimedOut | ServerError | 下载指定的 Azure Blob () 时遇到超时。 |
BlobDownloadMiscError | ServerError | 下载指定的 Azure Blob () 时遇到其他错误。 |
ResourceDirectoryCreateFailed | ServerError | 为任务创建资源目录时遇到失败。 |
ResourceFileCreateFailed | ServerError | 创建资源文件时遇到失败。 |
ResourceFileWriteFailed | ServerError | 写入资源文件时失败。 |
CommandProgramNotFound | UserError | 找不到指定的命令程序。 |
CommandLaunchFailed | UserError | 未能启动指定的命令行。 |
TaskEnded | UserError | 任务已由用户请求结束。 |
MaxInternalRetryCountReached | UserError | 指定的任务已达到最大内部重试计数。 |
TaskSchedulingConstraintFailed | UserError | 无法在与作业关联的池上计划任务 |
DiskFull | ServerError | 选择的节点上没有足够的磁盘空间来运行任务。 |
未知 | ServerError | 发生未知计划错误。 |