

# Amazon ECS API 失败原因
<a name="api_failures_messages"></a>

如果您通过 Amazon ECS API、控制台或 AWS CLI 退出时出现 `failures` 错误消息，以下内容可能有助于解决原因。失败会返回原因和与故障关联资源的 Amazon 资源名称（ARN）。

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

有关 `Failure` 数据类型结构的更多信息，请参阅 *Amazon Elastic Container Service API 参考*中的[失败](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_Failure.html)。

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



- ** `DescribeClusters` **
  - **失败原因或停止原因:** `MISSING`
  - **原因:** 未找到指定的集群。验证集群名称的拼写。

- ** `DescribeInstances` **
  - **失败原因或停止原因:** `MISSING`
  - **原因:** 未找到指定的容器实例。验证您指定了容器实例注册到的集群，以及容器实例 ARN 或 ID 是否正确。

- ** `DescribeServices` **
  - **失败原因或停止原因:** `MISSING`
  - **原因:** 未找到指定的服务。验证是否指定了正确的集群或区域，并且服务 ARN 或名称是否有效。

- ** `DescribeTasks` **
  - **失败原因或停止原因:** `MISSING`
  - **原因:** 未找到指定的任务。验证是否指定了正确的集群或区域，以及任务 ARN 或 ID 都有效。

- ** `DescribeTasks`  **
  - **失败原因或停止原因:** `TaskFailedToStart: RESOURCE:*` / **原因:** 对于 `RESOURCE:CPU` 错误，任务请求的 CPU 数量在给定容器实例上不可用。当任务定义中的 CPU 单位要求大于映射到容量提供程序的自动扩缩组中定义的 Amazon EC2 实例的 CPU 大小时，通常会发生这种情况。您需要检查容量提供程序的配置。<br />对于 `RESOURCE:MEMORY` 错误，任务请求的内存量在给定容器实例上不可用。当任务定义中的内存量要求大于映射到容量提供程序的自动扩缩组中定义的 Amazon EC2 实例支持的内存时，通常会发生这种情况。您需要检查容量提供程序的配置。
  - **失败原因或停止原因:** `TaskFailedToStart: AGENT` / **原因:** 您尝试在其上启动任务的容器实例有一个目前已断开连接的代理。为防止任务放置的等待时间延长，已拒绝该请求。<br />有关如何排除断开连接的代理故障的信息，请参阅[如何排除断开连接的 Amazon ECS 代理的故障](https://repost.aws/knowledge-center/ecs-agent-disconnected-linux2-ami)。
  - **失败原因或停止原因:** `TaskFailedToStart: MemberOf placement constraint unsatisfied` / **原因:** 没有满足任务定义中定义的放置约束的容器实例。
  - **失败原因或停止原因:** `TaskFailedToStart: ATTRIBUTE` / **原因:** 您的任务定义包含一个需要容器实例上未提供的特定容器实例属性参数。例如，如果您的任务使用 `awsvpc` 网络模式，但您指定的子网中没有包含 `ecs.capability.task-eni` 属性的实例。有关特定任务定义参数和代理配置变量需要哪些属性的更多信息，请参阅[Fargate 的 Amazon ECS 任务定义参数](task_definition_parameters.md)和 [Amazon ECS 容器代理配置](ecs-agent-config.md)。
  - **失败原因或停止原因:** TaskFailedToStart: NO ACTIVE INSTANCES / **原因:** 您的容量提供程序中没有活动实例。有关如何管理自动扩缩组的信息，请参阅《Amazon EC2 Auto Scaling 用户指南》中的[自动扩缩组](https://docs.aws.amazon.com/autoscaling/ec2/userguide/auto-scaling-groups.html)。
  - **失败原因或停止原因:** `TaskFailedToStart: EMPTY CAPACITY PROVIDER` / **原因:** 您的集群中没有实例。这很可能是因为容量提供程序为空，或者因为容量提供程序中的实例未注册到集群。有关如何管理自动扩缩组的信息，请参阅《Amazon EC2 Auto Scaling 用户指南》中的[自动扩缩组](https://docs.aws.amazon.com/autoscaling/ec2/userguide/auto-scaling-groups.html)。

- ** `GetTaskProtection` **
  - **失败原因或停止原因:** `MISSING` / **原因:** 未找到指定的任务。验证集群名称或 ARN 以及任务 ARN 或 ID 是否有效。
  - **失败原因或停止原因:** `TASK_NOT_VALID` / **原因:** 指定任务并非 Amazon ECS 服务的一部分。只有 Amazon ECS 服务托管的任务可以受到保护。验证任务 ARN 或 ID，然后重试。

- ** `RunTask` 或 `StartTask` **
  - **失败原因或停止原因:** `RESOURCE:*` / **原因:** 任务请求的资源在给定容器实例上不可用。如果资源是 CPU、内存、端口或弹性网络接口，则您可能需要将容器实例添加到集群。<br />如果出现 `RESOURCE:ENI` 错误，则说明您的集群没有任何可用的弹性网络接口附加点，这是使用 `awsvpc` 网络模式的任务必需的。Amazon EC2 实例对可以附加到它们的网络接口数量有限制，并且主网络接口算作一个。要详细了解每种实例类型支持的网络接口数量，请参阅《Amazon EC2 用户指南》中的[每种实例类型的每个网络接口的 IP 地址数](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#AvailableIpPerENI)**。<br />对于 `RESOURCE:GPU` 错误，任务请求的 GPU 数量不可用，您可能需要将支持 GPU 的容器实例添加到集群。有关更多信息，请参阅 [适用于 GPU 工作负载的 Amazon ECS 任务定义](ecs-gpu.md)。
  - **失败原因或停止原因:** `AGENT` / **原因:** 您尝试在其上启动任务的容器实例有一个目前已断开连接的代理。为防止任务放置的等待时间延长，已拒绝该请求。<br />有关如何排除断开连接的代理故障的信息，请参阅[如何排除断开连接的 Amazon ECS 代理的故障](https://repost.aws/knowledge-center/ecs-agent-disconnected-linux2-ami)。
  - **失败原因或停止原因:** `LOCATION` / **原因:** 您尝试启动任务的容器实例位于与您在 `awsVpcConfiguration` 中指定的子网不同的可用区。
  - **失败原因或停止原因:** `ATTRIBUTE` / **原因:** 您的任务定义包含一个需要容器实例上未提供的特定容器实例属性参数。例如，如果您的任务使用 `awsvpc` 网络模式，但您指定的子网中没有包含 `ecs.capability.task-eni` 属性的实例。有关特定任务定义参数和代理配置变量需要哪些属性的更多信息，请参阅[Fargate 的 Amazon ECS 任务定义参数](task_definition_parameters.md)和 [Amazon ECS 容器代理配置](ecs-agent-config.md)。

- ** `StartTask` **
  - **失败原因或停止原因:** `MISSING` / **原因:** 找不到您尝试启动任务的容器实例。检查是否指定了错误的集群或区域，或者容器实例 ARN 或 ID 是否拼写错误。
  - **失败原因或停止原因:** `INACTIVE` / **原因:** 您尝试启动任务的容器实例之前已从 Amazon ECS 注销且无法使用。

- ** `StopServiceDeployment` **
  - **失败原因或停止原因:** `ECS deployment failed`
  - **原因:** 一个欺诈账户运行了 StopServiceDeployment API。

- ** `TagResource` **
  - **失败原因或停止原因:** `InvalidParameterException`
  - **原因:** 您要标记的服务的 ARN 采用短格式。您必须迁移到长格式。有关如何迁移 ARN 的信息，请参阅[将 Amazon ECS 短服务 ARN 迁移到长 ARN](service-arn-migration.md)。

- ** `UpdateTaskProtection` **
  - **失败原因或停止原因:** `DEPLOYMENT_BLOCKED` / **原因:** 无法设置任务保护，因为一项或多项受保护的任务正在阻止服务部署达到稳定状态。取消对现有任务的任务保护或等到任务保护到期。
  - **失败原因或停止原因:** `MISSING` / **原因:** 未找到指定的任务。验证集群名称或 ARN 以及任务 ARN 或 ID 是否有效。
  - **失败原因或停止原因:** `TASK_NOT_VALID` / **原因:** 指定任务并非 Amazon ECS 服务的一部分。只有 Amazon ECS 服务托管的任务可以受到保护。验证任务 ARN 或 ID，然后重试。



**注意**  
除了此处描述的故障场景外，API 操作也可能由于异常而失败，从而导致错误响应。有关此类异常的列表，请参阅 [Common Errors](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/CommonErrors.html)（常见错误）。