你当前正在访问 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 发生未知计划错误。