API 失败原因 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

API 失败原因

当您通过 Amazon ECS API、控制台或控制台触发的 API 操作 Amazon CLI 退出并显示failures错误消息时,以下内容可能有助于排除原因。失败将返回与故障关联的资源的原因和 Amazon Resource Name (ARN)。

许多资源都特定于区域,因此,在设置控制台时,确保区域和资源对应。使用时 Amazon CLI,请确保使用--region region参数将您的 Amazon CLI 命令发送到正确的区域。

有关 Failure 数据类型结构的更多信息,请参阅 Amazon Elastic Container Service API 参考中的失败

以下是运行 API 命令时可能收到的失败消息示例。

API 操作

失败原因或停止原因

原因

DescribeClusters

MISSING

未找到指定的集群。验证集群名称的拼写。

DescribeInstances

MISSING

未找到指定的容器实例。验证您指定了容器实例注册到的集群,以及容器实例 ARN 或 ID 是否正确。

DescribeServices

MISSING

未找到指定的服务。验证是否指定了正确的群集或区域,并且服务 ARN 或名称是否有效。

DescribeTasks

MISSING

未找到指定的任务。验证是否指定了正确的集群或区域,以及任务 ARN 或 ID 都有效。

DescribeTasks

TaskFailedToStart: RESOURCE:*

对于 RESOURCE:CPU 错误,任务请求的 CPU 数量在给定容器实例上不可用。当任务定义中的 CPU 单位要求大于映射到容量提供程序的自动扩缩组中定义的 EC2 实例的 CPU 大小时,通常会发生这种情况。您需要检查容量提供程序的配置。有关如何添加、查看和修改容量提供程序的信息,请参阅 Amazon ECS 容量提供程序

对于 RESOURCE:MEMORY 错误,任务请求的内存量在给定容器实例上不可用。当任务定义中的内存量要求大于映射到容量提供程序的自动扩缩组中定义的 EC2 实例支持的内存时,通常会发生这种情况。您需要检查容量提供程序的配置。有关如何添加、查看和修改容量提供程序的信息,请参阅 Amazon ECS 容量提供程序

TaskFailedToStart: AGENT

您尝试在其上启动任务的容器实例有一个目前已断开连接的代理。为防止任务放置的等待时间延长,已拒绝该请求。

有关如何排除断开连接的代理故障的信息,请参阅如何排除断开连接的 Amazon ECS 代理的故障

TaskFailedToStart: MemberOf placement constraint unsatisfied

没有满足任务定义中定义的放置限制的容器实例。

TaskFailedToStart: ATTRIBUTE

您的任务定义包含一个需要容器实例上未提供的特定容器实例属性参数。例如,如果您的任务使用 awsvpc 网络模式,但您指定的子网中没有包含 ecs.capability.task-eni 属性的实例。有关特定任务定义参数和代理配置变量需要哪些属性的更多信息,请参阅任务定义参数Amazon ECS 容器代理配置

TaskFailedToStart: NO ACTIVE INSTANCES 您的容量提供程序中没有活动实例。有关如何添加、查看和修改容量提供程序的信息,请参阅 Amazon ECS 容量提供程序。有关如何管理自动扩缩组的信息,请参阅《Amazon EC2 Auto Scaling 用户指南》中的自动扩缩组

TaskFailedToStart: EMPTY CAPACITY PROVIDER

您的集群中没有实例。这很可能是因为容量提供程序为空,或者因为容量提供程序中的实例未注册到集群。有关如何管理容量提供程序的信息,请参阅 Amazon ECS 容量提供程序。有关如何管理自动扩缩组的信息,请参阅《Amazon EC2 Auto Scaling 用户指南》中的自动扩缩组

GetTaskProtection

MISSING

未找到指定的任务。验证集群名称或 ARN 以及任务 ARN 或 ID 是否有效。

TASK_NOT_VALID

指定任务不是 Amazon ECS 服务的一部分。只有 Amazon ECS 服务托管的任务可以受到保护。验证任务 ARN 或 ID,然后重试。

RunTaskStartTask

RESOURCE:*

任务请求的资源在给定容器实例上不可用。如果资源是 CPU、内存、端口或弹性网络接口,则您可能需要将容器实例添加到集群。

如果出现 RESOURCE:ENI 错误,则说明您的群集没有任何可用的弹性网络接口附加点,这是使用 awsvpc 网络模式的任务必需的。Amazon EC2 实例对可以附加到它们的网络接口数量有限制,并且主网络接口算作一个。有关每个实例类型支持的网络接口数量的更多信息,请参阅 Linux Instances的Amazon EC2 用户指南中的每个实例类型的每个网络接口的 IP 地址

对于 RESOURCE:GPU 错误,任务请求的 GPU 数量不可用,您可能需要将支持 GPU 的容器实例添加到集群。有关更多信息,请参阅在 Amazon ECS 上使用 GPU

AGENT

您尝试在其上启动任务的容器实例有一个目前已断开连接的代理。为防止任务放置的等待时间延长,已拒绝该请求。

有关如何排除断开连接的代理故障的信息,请参阅如何排除断开连接的 Amazon ECS 代理的故障

LOCATION

您尝试启动任务的容器实例位于与您在 awsVpcConfiguration 中指定的子网不同的可用区。

ATTRIBUTE

您的任务定义包含一个需要容器实例上未提供的特定容器实例属性参数。例如,如果您的任务使用 awsvpc 网络模式,但您指定的子网中没有包含 ecs.capability.task-eni 属性的实例。有关特定任务定义参数和代理配置变量需要哪些属性的更多信息,请参阅任务定义参数Amazon ECS 容器代理配置

StartTask

MISSING

找不到您尝试启动任务的容器实例。可能指定了错误的集群或区域,或者容器实例 ARN 或 ID 拼写错误。

INACTIVE

您尝试启动任务的容器实例之前已从 Amazon ECS 注销且无法使用。

UpdateTaskProtection

DEPLOYMENT_BLOCKED

无法设置任务保护,因为一项或多项受保护的任务正在阻止服务部署达到稳定状态。取消对现有任务的任务保护或等到任务保护到期。

MISSING

未找到指定的任务。验证集群名称或 ARN 以及任务 ARN 或 ID 是否有效。

TASK_NOT_VALID

指定任务不是 Amazon ECS 服务的一部分。只有 Amazon ECS 服务托管的任务可以受到保护。验证任务 ARN 或 ID,然后重试。

注意

除了此处描述的失败场景外,API 操作还可能由于异常而失败,从而导致错误响应。有关此类异常的列表,请参阅 Common Errors(常见错误)。