

# Amazon ECS 已停止任务错误消息
<a name="stopped-task-error-codes"></a>

以下是任务意外停止时，您可能会收到的可能错误消息。

要使用 AWS 管理控制台 检查已停止的任务是否有错误消息，请参阅 [查看 Amazon ECS 已停止任务错误](stopped-task-errors.md)。

**提示**  
您可以将 [Amazon ECS MCP 服务器](ecs-mcp-introduction.md)与人工智能助手结合使用，通过自然语言分析任务失败和容器日志。

已停止的任务错误代码有一个与其关联的类别，例如“ResourceInitializationError”。有关每个类别的更多信息，请参阅以下文档：


| 类别 | 了解详情 | 
| --- | --- | 
|  TaskFailedToStart  |  [排查 Amazon ECS TaskFailedToStart 错误](failed-to-start-error.md)  | 
|  ResourceInitializationError  |  [排查 Amazon ECS ResourceInitializationError 错误](resource-initialization-error.md)  | 
| ResourceNotFoundException |  [排查 Amazon ECS ResourceNotFoundException 错误](resource-not-found-error.md) | 
|  SpotInterruptionError  |  [排查 Amazon ECS SpotInterruption 错误](spot-interruption-errors.md)  | 
|  InternalError  |  [排查 Amazon ECS InternalError 错误](internal-error.md)  | 
|  OutOfMemoryError  |  [排查 Amazon ECS OutOfMemoryError 错误](out-of-memory.md)  | 
|  ContainerRuntimeError  |  [排查 Amazon ECS ContainerRuntimeError 错误](container-runtime-error.md)  | 
|  ContainerRuntimeTimeoutError  |  [排查 Amazon ECS ContainerRuntimeTimeoutError 错误](container-runtime-timeout-error.md)  | 
|  CannotStartContainerError  |  [排查 Amazon ECS CannotStartContainerError 错误](cannot-start-container.md)  | 
|  CannotStopContainerError  |  [排查 Amazon ECS CannotStopContainerError 错误](cannot-stop-container.md)  | 
|  CannotInspectContainerError  |  [排查 Amazon ECS CannotInspectContainerError 错误](cannot-inspect-container.md)  | 
|  CannotCreateVolumeError  |  [排查 Amazon ECS CannotCreateVolumeError 错误](cannot-create-volume.md)  | 
| CannotPullContainer |  [Amazon ECS 中的 CannotPullContainer 任务错误](task_cannot_pull_image.md)  | 

# 排查 Amazon ECS TaskFailedToStart 错误
<a name="failed-to-start-error"></a>

以下是一些 `TaskFailedToStart` 错误消息和可以用来修复错误的操作。

要使用 AWS 管理控制台 检查已停止的任务是否有错误消息，请参阅 [查看 Amazon ECS 已停止任务错误](stopped-task-errors.md)。

## 尝试在子网“*subnet-id*”中创建启用了公有 IP 分配的网络接口时意外出现 EC2 错误
<a name="subnet-error"></a>

当 Fargate 任务使用 `awsvpc` 网络模式并在具有公有 IP 地址的子网中运行，且该子网没有足够的 IP 地址时，就会发生这种情况。

可用 IP 地址的数量可在 Amazon EC2 控制台中的子网详细信息页面上找到，也可以使用 `[describe-subnets](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-subnets.html)` 找到。有关更多信息，请参阅《Amazon VPC 用户指南》**中的[查看您的子网](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-vpcs.html#view-subnet)。

要解决此问题，您可以创建一个新的子网，在其中运行您的任务。

## InternalError：*<reason>*
<a name="internal-error-reason"></a>

当请求 ENI 连接时会出现此错误。Amazon EC2 会异步处理 ENI 的配置。配置过程需要时间。如果等待时间长或出现未报告的故障，则 Amazon ECS 会超时。存在 ENI 已配置，但故障超时后报告发送至 Amazon ECS 的情况。在这种情况下，Amazon ECS 会出现报告的任务故障，并带有使用中的 ENI。

## 选定的任务定义与选定的计算策略不兼容
<a name="compute-compatibility"></a>

当您所选任务定义的启动类型与集群容量类型不匹配时，将发生此错误。您需要选择与分配给集群的容量提供程序相匹配的任务定义。

## 无法将网络接口连接到未使用的设备索引
<a name="compute-compatibility-cpu"></a>

使用 `awsvpc` 联网类型并且没有足够的 CPU/内存来执行任务时，就会发生此错误。首先，请检查用于实例的 CPU。有关更多信息，请参阅《Amazon EC2 实例类型》中的 [Amazon EC2 instance type specifications](https://docs.aws.amazon.com/ec2/latest/instancetypes/ec2-instance-type-specifications.html)**。获取实例的 CPU 值并将其乘以实例的 ENI 数量。在任务定义中使用该值。

## AGENT
<a name="agent-not-started"></a>

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

有关如何排除断开连接的代理故障的信息，请参阅[如何排除断开连接的 Amazon ECS 代理的故障](https://repost.aws/knowledge-center/ecs-agent-disconnected-linux2-ami)。

# 排查 Amazon ECS ResourceInitializationError 错误
<a name="resource-initialization-error"></a>

以下是一些 `ResourceInitialization` 错误消息和可以用来修复错误的操作。

要使用 AWS 管理控制台 检查已停止的任务是否有错误消息，请参阅 [查看 Amazon ECS 已停止任务错误](stopped-task-errors.md)。

**Topics**
+ [任务无法从 Amazon ECR 提取注册表身份验证。任务与 Amazon ECR 之间存在连接问题。请检查任务网络配置。](#unable-to-pull-secrets-ecr)
+ [任务无法从 Amazon S3 下载环境变量文件。任务与 Amazon S3 之间存在连接问题。请检查任务网络配置。](#failed-to-download-env-files)
+ [任务无法从 AWS Systems Manager Parameter Store 中提取密钥。检查任务与 AWS Systems Manager 之间的网络连接。](#unable-to-pull-secrets-sys-manager)
+ [任务无法从 AWS Secrets Manager 中提取密钥。任务与 Secrets Manager 之间存在连接问题。请检查任务网络配置。](#unable-to-pull-secrets-asm-no-arn)
+ [任务无法从 Secrets Manager 中提取密钥。任务无法从 Secrets Manager 中检索到 ARN 为“*secretARN*”的密钥。请检查指定区域中是否存在该密钥。](#unable-to-pull-secrets-asm)
+ [pull command failed: unable to pull secrets or registry auth Check your task network configuration.](#pull-command-failed)
+ [任务无法找到任务定义中定义的 Amazon CloudWatch 日志组。任务与 Amazon CloudWatch 之间存在连接问题。请检查网络配置。](#failed-to-initialize-logging-network)
+ [无法初始化日志记录驱动程序](#failed-to-initialize-logging)
+ [无法调用 EFS utils 命令来设置 EFS 卷](#efs-utils-failed)

## 任务无法从 Amazon ECR 提取注册表身份验证。任务与 Amazon ECR 之间存在连接问题。请检查任务网络配置。
<a name="unable-to-pull-secrets-ecr"></a>

此错误表明任务无法连接到 Amazon ECR。

检查任务与 Amazon ECR 之间的连接。有关信息，请参阅[验证 Amazon ECS 已停止任务连接](verify-connectivity.md)。

## 任务无法从 Amazon S3 下载环境变量文件。任务与 Amazon S3 之间存在连接问题。请检查任务网络配置。
<a name="failed-to-download-env-files"></a>

当任务无法从 Amazon S3 下载环境文件时，则会出现此错误。

检查任务与 Amazon S3 VPC 端点之间的连接。有关信息，请参阅[验证 Amazon ECS 已停止任务连接](verify-connectivity.md)。

## 任务无法从 AWS Systems Manager Parameter Store 中提取密钥。检查任务与 AWS Systems Manager 之间的网络连接。
<a name="unable-to-pull-secrets-sys-manager"></a>

当任务无法使用 Systems Manager 中的凭证拉取任务定义中定义的映像时，将出现此错误。

检查任务与 Systems Manager VPC 端点之间的连接。有关信息，请参阅[验证 Amazon ECS 已停止任务连接](verify-connectivity.md)。

## 任务无法从 AWS Secrets Manager 中提取密钥。任务与 Secrets Manager 之间存在连接问题。请检查任务网络配置。
<a name="unable-to-pull-secrets-asm-no-arn"></a>

当任务无法使用 Secrets Manager 中的凭证拉取任务定义中定义的映像时，将出现此错误。

此错误表明 Systems Manager VPC 端点与任务之间的网络连接存在问题。

有关如何验证任务与端点之间的连接的信息，请参阅 [验证 Amazon ECS 已停止任务连接](verify-connectivity.md)。

## 任务无法从 Secrets Manager 中提取密钥。任务无法从 Secrets Manager 中检索到 ARN 为“*secretARN*”的密钥。请检查指定区域中是否存在该密钥。
<a name="unable-to-pull-secrets-asm"></a>

当任务无法使用 Secrets Manager 中的凭证拉取任务定义中定义的映像时，将出现此错误。

可能导致此问题的原因如下：


| 错误原因... | 请执行此操作... | 
| --- | --- | 
|   Secrets Manager VPC 端点与任务之间的网络连接问题。 在错误消息中看到以下任何字符串时，则说明问题属于网络问题： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonECS/latest/developerguide/resource-initialization-error.html)  |  验证任务与 Secrets Manager 端点之间的连接。有关更多信息，请参阅 [验证 Amazon ECS 已停止任务连接](verify-connectivity.md)。  | 
| 任务定义中定义的任务执行角色不具有 Secrets Manager 的权限。 |  将所需 Secrets Manager 权限添加到任务执行角色。有关更多信息，请参阅 [Secrets Manager 或 Systems Manager 权限](task_execution_IAM_role.md#task-execution-secrets)。  | 
| 密钥 ARN 不存在 | 检查 Secrets Manager 中是否存在该 ARN。有关查看映像的信息，请参阅《Secrets Manager 开发人员指南》中的 [Find secrets in Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_search-secret.html)。 | 

## pull command failed: unable to pull secrets or registry auth Check your task network configuration.
<a name="pull-command-failed"></a>

当任务无法连接到 Amazon ECR、Systems Manager 或 Secrets Manager 时，会出现此错误。这是由于网络配置错误造成的。

要修复此问题，请验证任务与 Amazon ECR 之间的连接。您还需要检查任务和存储密钥的服务（Systems Manager 或 Secrets Manager）之间的连接。有关更多信息，请参阅 [验证 Amazon ECS 已停止任务连接](verify-connectivity.md)。

## 任务无法找到任务定义中定义的 Amazon CloudWatch 日志组。任务与 Amazon CloudWatch 之间存在连接问题。请检查网络配置。
<a name="failed-to-initialize-logging-network"></a>

当您的任务无法找到您在任务定义中定义的 CloudWatch 日志组时，将发生此错误。

此错误表明 CloudWatch VPC 端点与任务之间的网络连接存在问题。

有关如何验证任务与端点之间的连接的信息，请参阅 [验证 Amazon ECS 已停止任务连接](verify-connectivity.md)。

## 无法初始化日志记录驱动程序
<a name="failed-to-initialize-logging"></a>

当您的任务无法找到您在任务定义中定义的 CloudWatch 日志组时，将发生此错误。

此错误指示任务定义中的 CloudWatch 组不存在。

使用以下步骤查找缺失的 CloudWatch。

1. 运行以下命令，获取任务定义信息。

   ```
   aws ecs describe-task-definition \ 
       --task-definition task-def-name
   ```

   查看每个容器的输出并记下其 `awslogs-group` 值。

   ```
   "logConfiguration": {
                   "logDriver": "awslogs",
                   "options": {
                       "awslogs-group": "/ecs/example-group",
                       "awslogs-create-group": "true",
                       "awslogs-region": "us-east-1",
                       "awslogs-stream-prefix": "ecs"
                   },
   ```

1. 验证组在 CloudWatch 中存在。有关更多信息，请参阅《Amazon CloudWatch Logs 用户指南》**中的[使用日志组和日志流](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html)。

   问题可能是任务定义中指定的组不正确，或者日志组不存在。

1. 修复问题。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonECS/latest/developerguide/resource-initialization-error.html)

## 无法调用 EFS utils 命令来设置 EFS 卷
<a name="efs-utils-failed"></a>

以下问题可能会阻止您在任务中挂载 Amazon EFS 卷：
+ Amazon EFS 文件系统配置不正确。
+ 该任务没有所需的权限。
+ 存在与网络和 VPC 配置有关的问题。

 有关如何调试和修复此问题的信息，请参阅 AWS re:Post 上的[为什么我无法在 AWS Fargate 任务上挂载 Amazon EFS 卷](https://repost.aws/knowledge-center/fargate-unable-to-mount-efs)。

# 排查 Amazon ECS ResourceNotFoundException 错误
<a name="resource-not-found-error"></a>

以下是一些 ` ResourceNotFoundException` 错误消息和可以用来修复错误的操作。

要使用 AWS 管理控制台 检查已停止的任务是否有错误消息，请参阅 [查看 Amazon ECS 已停止任务错误](stopped-task-errors.md)。

## 任务未能在 AWS Secrets Manager 中检索到 ARN 为“*sercretARN*”的密钥。请检查指定区域中是否存在该密钥。
<a name="unable-to-pull-secrets-ecr"></a>

当任务无法从 Secrets Manager 中检索到密钥时，将出现此错误。这意味着 Secrets Manager 中不存在任务定义中指定（并包含在错误消息中）的密钥。

区域也包含在错误消息中。

正在从 *region* 区域中的 AWS Secrets Manager 获取密钥数据：密钥 *sercretARN*：ResourceNotFoundException：Secrets Manager 找不到指定的密钥。

有关查找密钥的信息，请参阅《AWS Secrets Manager 用户指南》中的 [Find secrets in AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_search-secret.html)**。

可使用下表确定和解决错误。


| 问题 | 操作 | 
| --- | --- | 
| 该密钥位于与任务定义不同的区域。 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonECS/latest/developerguide/resource-not-found-error.html) | 
| 任务定义中的密钥 ARN 不正确。正确的密钥存在于 Secrets Manager 中。 | 使用正确的密钥更新任务定义。有关更多信息，请参阅《Amazon Elastic Container Service API 参考》中的 [使用控制台更新 Amazon ECS 任务定义](update-task-definition-console-v2.md) 或 [RegisterTaskDefinition](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RegisterTaskDefinition.html)。 | 
| 该密钥已不再存在。 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonECS/latest/developerguide/resource-not-found-error.html)  | 

# 排查 Amazon ECS SpotInterruption 错误
<a name="spot-interruption-errors"></a>

Fargate 和 EC2 的 `SpotInterruption` 错误原因不同。

要使用 AWS 管理控制台 检查已停止的任务是否有错误消息，请参阅 [查看 Amazon ECS 已停止任务错误](stopped-task-errors.md)。

## Fargate
<a name="fargate-spot-error"></a>

当没有 Fargate 竞价型容量或 Fargate 收回竞价型容量时，将出现 `SpotInterruption` 错误。

您可以让任务在多个可用区中运行，以提供更多容量。

## EC2
<a name="ec2-spot-error"></a>

当没有可用的竞价型实例或 EC2 收回竞价型实例容量时，将出现此错误。

您可以让实例在多个可用区中运行，以提供更多容量。

# 排查 Amazon ECS InternalError 错误
<a name="internal-error"></a>

**适用于：**Fargate

要使用 AWS 管理控制台 检查已停止的任务是否有错误消息，请参阅 [查看 Amazon ECS 已停止任务错误](stopped-task-errors.md)。

当代理遇到意外的非运行时相关的内部错误时，将出现 `InternalError` 错误。

仅当使用平台版本 `1.4` 或更高版本时才会发生此错误。

有关如何进行调试和修复此问题的信息，请参阅[Amazon ECS 已停止任务错误消息](stopped-task-error-codes.md)。

# 排查 Amazon ECS OutOfMemoryError 错误
<a name="out-of-memory"></a>

以下是一些 OutOfMemoryError 错误消息和可以用来修正错误的操作。

要使用 AWS 管理控制台 检查已停止的任务是否有错误消息，请参阅 [查看 Amazon ECS 已停止任务错误](stopped-task-errors.md)。

## 容器因内存使用情况而被终止
<a name="container-memory-usage"></a>

因容器中进程使用的内存超过任务定义中分配的内存，或因主机或操作系统限制，导致容器退出时，将发生此错误。

# 排查 Amazon ECS ContainerRuntimeError 错误
<a name="container-runtime-error"></a>

以下是一些 ContainerRuntimeError 错误消息和可以用来修正错误的操作。

要使用 AWS 管理控制台 检查已停止的任务是否有错误消息，请参阅 [查看 Amazon ECS 已停止任务错误](stopped-task-errors.md)。

## ContainerRuntimeError
<a name="container-runtime-error-1"></a>

当代理收到来自 `containerd` 运行时特定操作的意外错误时，将发生此错误。此错误通常是由代理或 `containerd` 运行时的内部故障所导致。

仅当使用平台版本 `1.4.0` 或更高版本（Linux）或者 `1.0.0` 或更高版本（Windows）时才会发生此错误。

有关如何调试和修复此问题的信息，请参阅 AWS re:Post 上的[为什么我的 Amazon ECS 任务停止了](https://repost.aws/knowledge-center/ecs-task-stopped)。

# 排查 Amazon ECS ContainerRuntimeTimeoutError 错误
<a name="container-runtime-timeout-error"></a>

以下是一些 ContainerRuntimeTimeoutError 错误消息和可以用来修正错误的操作。

要使用 AWS 管理控制台 检查已停止的任务是否有错误消息，请参阅 [查看 Amazon ECS 已停止任务错误](stopped-task-errors.md)。

## 无法过渡到正在运行状态；等待 1 分钟后超时或出现 Docker 超时错误
<a name="container-runtime-timeout-error-1"></a>

当容器无法在超时时间内转换到 `RUNNING` 或 `STOPPED` 状态时，会发生此错误。错误消息中将提供原因和超时值。

# 排查 Amazon ECS CannotStartContainerError 错误
<a name="cannot-start-container"></a>

以下是一些 CannotStartContainerError 错误消息和可以用来修正错误的操作。

要使用 AWS 管理控制台 检查已停止的任务是否有错误消息，请参阅 [查看 Amazon ECS 已停止任务错误](stopped-task-errors.md)。

## 无法获取容器状态：*<reason>*
<a name="cannot-start-container-1"></a>

容器无法启动时，将发生此错误。

如果您的容器尝试使用超出此处指定的内存，该容器将被终止。增加提供给容器的内存。这是任务定义中的 `memory` 参数。有关更多信息，请参阅 [内存](task_definition_parameters.md#container_definition_memory)。

# 排查 Amazon ECS CannotStopContainerError 错误
<a name="cannot-stop-container"></a>

以下是一些 CannotStopContainerError 错误消息和可以用来修正错误的操作。

要使用 AWS 管理控制台 检查已停止的任务是否有错误消息，请参阅 [查看 Amazon ECS 已停止任务错误](stopped-task-errors.md)。

## CannotStopContainerError
<a name="cannot-stop-container-1"></a>

容器无法停止时，将发生此错误。

有关如何调试和修复此问题的信息，请参阅 AWS re:Post 上的[为什么我的 Amazon ECS 任务停止了](https://repost.aws/knowledge-center/ecs-task-stopped)。

# 排查 Amazon ECS CannotInspectContainerError 错误
<a name="cannot-inspect-container"></a>

以下是一些 CannotInspectContainerError 错误消息和可以用来修正错误的操作。

要使用 AWS 管理控制台 检查已停止的任务是否有错误消息，请参阅 [查看 Amazon ECS 已停止任务错误](stopped-task-errors.md)。

## CannotInspectContainerError
<a name="cannot-inspect-container-1"></a>

当容器代理无法通过容器运行时描述容器时，将发生此错误。

当使用平台版本 `1.3` 或更早版本时，Amazon ECS 代理会从 Docker 返回原因。

当使用平台版本 `1.4.0` 或更高版本（Linux）或者 `1.0.0` 或更高版本（Windows）时，Fargate 代理从 `containerd` 返回原因。

有关如何调试和修复此问题的信息，请参阅 AWS re:Post 上的[为什么我的 Amazon ECS 任务停止了](https://repost.aws/knowledge-center/ecs-task-stopped)。

# 排查 Amazon ECS CannotCreateVolumeError 错误
<a name="cannot-create-volume"></a>

以下是一些 CannotCreateVolumeError 错误消息和可以用来修正错误的操作。

要使用 AWS 管理控制台 检查已停止的任务是否有错误消息，请参阅 [查看 Amazon ECS 已停止任务错误](stopped-task-errors.md)。

## CannotCreateVolumeError
<a name="cannot-create-volume-1"></a>

当代理无法创建任务定义中指定的卷挂载时，将发生此错误。

仅当使用平台版本 `1.4.0` 或更高版本（Linux）或者 `1.0.0` 或更高版本（Windows）时才会发生此错误。

有关如何调试和修复此问题的信息，请参阅 AWS re:Post 上的[为什么我的 Amazon ECS 任务停止了](https://repost.aws/knowledge-center/ecs-task-stopped)。

# Amazon ECS 中的 CannotPullContainer 任务错误
<a name="task_cannot_pull_image"></a>

以下错误表明任务无法启动，因为 Amazon ECS 无法检索指定的容器映像。

**注意**  
1.4 Fargate 平台版本会截断长错误消息。

要使用 AWS 管理控制台 检查已停止的任务是否有错误消息，请参阅 [查看 Amazon ECS 已停止任务错误](stopped-task-errors.md)。

**提示**  
您可以将 [Amazon ECS MCP 服务器](ecs-mcp-introduction.md)与人工智能助手结合使用，通过自然语言调查映像拉取错误。

**Topics**
+ [任务无法拉取映像。请检查该角色是否具有从注册表中拉取映像的权限。](#pull-request-image-not-found)
+ [任务无法从 Amazon ECR 存储库“*存储库 URI*”中提取“*image-name*”。任务与 Amazon ECR 之间存在连接问题。请检查任务网络配置。](#pull-image-io-timeout)
+ [任务无法拉取映像。检查网络配置](#pull-request-image-not-found-network)
+ [CannotPullContainerError：拉取映像清单已重试 5 次：无法解析 ref](#pull-request-image-tag)
+ [API 错误（500）：获取 https://111122223333.dkr.ecr.us-east-1.amazonaws.com/v2/：net/http：在等待连接期间请求被取消](#request-canceled)
+ [API 错误](#pull-request-api-error)
+ [写入 /var/lib/docker/tmp/*GetImageBlob111111111*：设备上空间不足](#pull-request-write-error)
+ [ERROR：toomanyrequests：请求太多或您已达到拉取速率限制。](#container-pull-too-many-requests)
+ [来自进程守护程序的错误响应：获取 *url*：net/http：在等待连接期间请求被取消](#container-pull-request-canceled-connection)
+ [ref pull 已重试 1 次：无法复制：httpReaderSeeker：无法打开：意外状态代码](#container-pull-failed-open)
+ [拉取访问被拒绝](#container-pull-access-denied.title)
+ [pull 命令失败：panic：运行时错误：内存地址无效或指针取消引用为零](#container-pull-runtime-error.title)
+ [拉取映像配置时出错](#container-pull-pulling-image.title)
+ [上下文已取消](#container-pull-context-canceled)

## 任务无法拉取映像。请检查该角色是否具有从注册表中拉取映像的权限。
<a name="pull-request-image-not-found"></a>

此错误表明由于存在权限问题，任务无法拉取任务定义中指定的映像。

要解决此问题，请执行以下操作：

1. 检查 *repository* 中是否存在该映像。有关查看映像的信息，请参阅《Amazon Elastic Container Registry 用户指南》中的 [Viewing image details in Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/image-info.html)**。

1. 验证 *role-arn* 是否具有拉取映像的适当权限。

   有关如何更新角色的信息，请参阅《AWS Identity and Access Management 用户指南》**中的[更新角色权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_update-role-permissions.html)。

   该任务会使用以下角色之一：
   + 对于使用 Fargate 的任务，这是任务执行角色。有关其他 Amazon ECR 权限的信息，请参阅 [Fargate 任务通过接口端点拉取 Amazon ECR 映像的权限](task_execution_IAM_role.md#task-execution-ecr-conditionkeys)。
   + 对于使用 EC2 的任务，这是容器实例角色。有关其他 Amazon ECR 权限的信息，请参阅 [Amazon ECR 权限](instance_IAM_role.md#container-instance-role-ecr)。

## 任务无法从 Amazon ECR 存储库“*存储库 URI*”中提取“*image-name*”。任务与 Amazon ECR 之间存在连接问题。请检查任务网络配置。
<a name="pull-image-io-timeout"></a>

此错误表明任务无法连接到 Amazon ECR。检查与*存储库 URI* 存储库的连接。

有关如何验证和解决问题的信息，请参阅 [验证 Amazon ECS 已停止任务连接](verify-connectivity.md)。

## 任务无法拉取映像。检查网络配置
<a name="pull-request-image-not-found-network"></a>

此错误表明任务无法连接到 Amazon ECR。

有关如何验证和解决问题的信息，请参阅 [验证 Amazon ECS 已停止任务连接](verify-connectivity.md)。

## CannotPullContainerError：拉取映像清单已重试 5 次：无法解析 ref
<a name="pull-request-image-tag"></a>

此错误表明任务无法拉取映像。

要解决此问题，您可以：
+ 验证任务定义中指定的映像是否与存储库中的映像匹配。
+ Amazon ECS 强制映像版本稳定性。如果原始映像不再可用，您将收到此错误。映像标签是强制执行此行为的一部分。将任务定义中的映像从使用 :latest 作为标签更改为特定版本。有关更多信息，请参阅 [容器映像解析](deployment-type-ecs.md#deployment-container-image-stability)。

有关如何验证和解决问题的信息，请参阅 [验证 Amazon ECS 已停止任务连接](verify-connectivity.md)。

## API 错误（500）：获取 https://111122223333.dkr.ecr.us-east-1.amazonaws.com/v2/：net/http：在等待连接期间请求被取消
<a name="request-canceled"></a>

此错误表明连接超时，原因是到互联网的路由不存在。

要解决此问题，您可以：
+ 对于在公有共子网中的任务，在启动任务时为**自动分配公有 IP** 指定**启用**。有关更多信息，请参阅 [将应用程序作为 Amazon ECS 任务运行](standalone-task-create.md)。
+ 对于在私有子网中的任务，在启动任务时为**自动分配公有 IP** 指定**禁用**，然后在 VPC 中配置 NAT 网关，将请求路由到互联网。有关更多信息，请参阅 *Amazon VPC 用户指南*中的 [NAT 网关](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html)。

## API 错误
<a name="pull-request-api-error"></a>

此错误表明 Amazon ECR 端点存在连接问题。

有关如何解决此问题的信息，请参阅 支持 网站上的[如何解决 Amazon ECS 中的 Amazon ECR 错误“CannotPullContainerError：API 错误”](https://aws.amazon.com/premiumsupport/knowledge-center/ecs-pull-container-api-error-ecr/)。

## 写入 /var/lib/docker/tmp/*GetImageBlob111111111*：设备上空间不足
<a name="pull-request-write-error"></a>

此错误表示磁盘空间不足。

要解决此问题，请释放磁盘空间。

如果使用的是经 Amazon ECS 优化的 AMI，则可以使用以下命令检索文件系统上 20 个最大的文件：

```
du -Sh / | sort -rh | head -20
```

输出示例：

```
5.7G    /var/lib/docker/containers/50501b5f4cbf90b406e0ca60bf4e6d4ec8f773a6c1d2b451ed8e0195418ad0d2
1.2G    /var/log/ecs
594M    /var/lib/docker/devicemapper/mnt/c8e3010e36ce4c089bf286a623699f5233097ca126ebd5a700af023a5127633d/rootfs/data/logs
...
```

在某些情况下，可以由正在运行的容器填充根卷。如果容器使用的是没有 `json-file` 限制的原定设置 `max-size` 日志驱动程序，则可能是日志文件占用了大部分已用空间。您可以使用 `docker ps` 命令通过将上面输出中的目录名称映射到容器 ID 来验证哪个容器占用了空间。例如：

```
CONTAINER ID   IMAGE                            COMMAND             CREATED             STATUS              PORTS                            NAMES
50501b5f4cbf   amazon/amazon-ecs-agent:latest   "/agent"            4 days ago          Up 4 days                                            ecs-agent
```

预设情况下，使用 `json-file` 日志驱动程序时，Docker 会捕获所有容器的标准输出（和标准错误），并使用 JSON 格式将它们写入到文件中。您可以将 `max-size` 设置为日志驱动程序选项，以防日志文件占用过多空间。有关更多信息，请参阅 Docker 文档中的 [JSON File logging driver](https://docs.docker.com/engine/logging/drivers/json-file/)。

下面的容器定义代码段说明此选项的用法：

```
{
    "log-driver": "json-file",
    "log-opts": {
        "max-size": "256m"
    }
}
```

如果容器日志占用过多磁盘空间，还有一个替代解决方案是使用 `awslogs` 日志驱动程序。`awslogs` 日志驱动程序将日志发送到 CloudWatch，这将释放容器实例上原本用于容器日志的磁盘空间。有关更多信息，请参阅 [将 Amazon ECS 日志发送到 CloudWatch](using_awslogs.md)。

您可能需要更新 Docker 可访问的磁盘大小。

有关更多信息，请参阅 [CannotPullContainerError: no space left on device](https://repost.aws/questions/QUx6Ix1R1SSNisYSs1Sw8EBA/cannotpullcontainererror-no-space-left-on-device)。

## ERROR：toomanyrequests：请求太多或您已达到拉取速率限制。
<a name="container-pull-too-many-requests"></a>

此错误表明有 Docker Hub 速率限制。

如果您收到以下错误之一，则可能达到 Docker Hub 速率限制：

有关 Docker Hub 费率限制的更多信息，请参阅 [了解 Docker Hub 速率限制](https://www.docker.com/increase-rate-limits)。

如果您提高了 Docker Hub 速率限制，且需要对容器实例的 Docker 拉取进行身份验证，请参阅[容器实例的私有注册表身份验证](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/private-auth-container-instances.html)。

## 来自进程守护程序的错误响应：获取 *url*：net/http：在等待连接期间请求被取消
<a name="container-pull-request-canceled-connection"></a>

此错误表明连接超时，原因是到互联网的路由不存在。

要解决此问题，您可以：
+ 对于在公有共子网中的任务，在启动任务时为**自动分配公有 IP** 指定**启用**。有关更多信息，请参阅 [将应用程序作为 Amazon ECS 任务运行](standalone-task-create.md)。
+ 对于在私有子网中的任务，在启动任务时为**自动分配公有 IP** 指定**禁用**，然后在 VPC 中配置 NAT 网关，将请求路由到互联网。有关更多信息，请参阅 *Amazon VPC 用户指南*中的 [NAT 网关](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html)。

## ref pull 已重试 1 次：无法复制：httpReaderSeeker：无法打开：意外状态代码
<a name="container-pull-failed-open"></a>

此错误表明复制映像时发生故障。

要解决此问题，请查看以下文章之一：
+ 有关 Fargate 任务，请参阅 [如何解决 Fargate 上 Amazon ECS 任务的 "cannotpullcontainererror" 错误](https://aws.amazon.com/premiumsupport/knowledge-center/ecs-fargate-pull-container-error/)。
+ 有关其他任务，请参阅[如何解决 Amazon ECS 任务的 "cannotpullcontainererror" 错误](https://aws.amazon.com/premiumsupport/knowledge-center/ecs-pull-container-error/)。

## 拉取访问被拒绝
<a name="container-pull-access-denied.title"></a>

此错误表明无法访问映像。

要解决此问题，您可能需要使用 Amazon ECR 对 Docker 客户端进行身份验证。有关更多信息，请参阅《Amazon ECR 用户指南》**中的[私有注册表身份验证](https://docs.aws.amazon.com/AmazonECR/latest/userguide/registry_auth.html)。

## pull 命令失败：panic：运行时错误：内存地址无效或指针取消引用为零
<a name="container-pull-runtime-error.title"></a>

此错误表明由于内存地址无效或空指针取消引用而无法访问映像。

要解决此问题，请执行以下操作：
+ 检查您是否有访问 Amazon S3 的安全组规则。
+ 使用网关端点时，必须在路由表中添加路由才能访问端点。

## 拉取映像配置时出错
<a name="container-pull-pulling-image.title"></a>

此错误表明已达到速率限制或存在网络错误：

要解决此问题，请参阅[如何解决我的 Amazon ECS EC2 启动类型任务中的“CannotPullContainerError”错误](https://repost.aws/knowledge-center/ecs-pull-container-error)。

## 上下文已取消
<a name="container-pull-context-canceled"></a>

此错误表明上下文已取消。

此错误的常见原因是，您的任务使用的 VPC 没有从 Amazon ECR 中提取容器映像的路径。