

# 解决 Amazon ECS 已停止任务错误
<a name="resolve-stopped-errors"></a>

当任务启动失败时，控制台和 `describe-tasks` 输出参数（`stoppedReason` 和 `stopCode`）中会显示一条错误消息。

您可以在控制台中查看一小时内已停止的任务。要查看已停止的任务，必须更改此筛选条件选项。有关更多信息，请参阅 [查看 Amazon ECS 已停止任务错误](stopped-task-errors.md)。

以下页面提供了有关已停止任务的信息。
+ 了解已停止任务错误消息的更改。

  [Amazon ECS 已停止任务错误消息更新](stopped-tasks-error-messages-updates.md)
+ 查看已停止的任务，从而获取有关原因的信息。

  [查看 Amazon ECS 已停止任务错误](stopped-task-errors.md)
+ 了解已停止任务错误消息以及导致错误的可能原因。

  [Amazon ECS 已停止任务错误消息](stopped-task-error-codes.md)
+ 了解如何验证已停止任务连接并修正错误。

  [验证 Amazon ECS 已停止任务连接](verify-connectivity.md)

# Amazon ECS 已停止任务错误消息更新
<a name="stopped-tasks-error-messages-updates"></a>

从 2024 年 6 月 14 日起，Amazon ECS 团队将更改已停止任务错误消息，如下表所述。`stopCode` 不会更改。如果您的应用程序依赖于确切的错误消息字符串，则必须使用新字符串更新应用程序。如需有关疑问或问题的帮助，请联系 AWS 支持。

**注意**  
我们建议您不要依赖错误消息进行自动化，因为错误消息可能会随时更改。

## CannotPullContainerError
<a name="cannot-pull-container-error-changes"></a>


| 旧的错误消息。 | 新的错误消息 | 
| --- | --- | 
| CannotPullContainerError：来自进程守护程序的错误响应：repository 拉取访问被拒绝，该存储库不存在或者可能需要“docker 登录”：已拒绝：用户：roleARN | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonECS/latest/developerguide/stopped-tasks-error-messages-updates.html)  | 
|  CannotPullContainerError：来自进程守护程序的错误响应：获取 imageURI：net/http：在等待连接期间请求被取消 |  CannotPullContainerError：任务无法拉取映像。请检查网络配置。来自进程守护程序的错误响应：获取 image：net/http：在等待连接期间请求被取消（在等待标头时超出了 Client.Timeout） | 
| CannotPullContainerError: ref pull has been retried 5 time(s): failed to copy: httpReadSeeker: failed open: failed to do request: Get registry-uri: dial tcp <ip>:<port> i/o timeout | CannotPullContainerError: The task cannot pull image-uri from the registry registry-uri. 任务与注册表之间存在连接问题。Check your task network configuration. : failed to copy: httpReadSeeker: failed open: failed to do request: Get registry-uri: dial tcp <ip>:<port> i/o timeout | 

## ResourceNotFoundException
<a name="resourcenotfound-error-changes"></a>


| 旧的错误消息。 | 新的错误消息 | 
| --- | --- | 
| 正在从 region 区域中的 AWS Secrets Manager 获取密钥数据：密钥 sercretARN：ResourceNotFoundException：Secrets Manager 找不到指定的密钥。 | ResourceNotFoundException：任务未能在 AWS Secrets Manager 中检索到 ARN 为“sercretARN”的密钥。请检查指定区域中是否存在该密钥。ResourceNotFoundException：正在从 region 区域中的 AWS Secrets Manager 获取密钥数据：密钥 sercretARN：ResourceNotFoundException：Secrets Manager 找不到指定的密钥。 | 

## ResourceInitializationError
<a name="resourceinitialization-error-changes"></a>


| 旧的错误消息。 | 新的错误消息 | 
| --- | --- | 
| ResourceInitializationError: unable to pull secrets or registry auth: execution resource retrieval failed: unable to retrieve ecr registry auth: service call has been retried 3 time(s): RequestError: send request failed caused by: Post "https://api.ecr.us-east-1.amazonaws.com/": dial tcp <ip>:<port>: i/o timeout. 请检查任务网络配置。 | ResourceInitializationError: unable to pull secrets or registry auth: The task cannot pull registry auth from Amazon ECR: There is a connection issue between the task and Amazon ECR. 请检查任务网络配置。RequestError: send request failed caused by: Post "https://api.ecr.us-east-1.amazonaws.com": dial tcp <ip>:<port>: i/o timeout | 
| ResourceInitializationError: unable to pull secrets or registry auth: execution resource retrieval failed: unable to retrieve secrets from ssm: service call has been retried 5 time(s): RequestCanceled: request context canceled caused by: context deadline exceeded | ResourceInitializationError: unable to pull secrets or registry auth: unable to retrieve secrets from ssm: The task cannot pull secrets from AWS Systems Manager. 任务与 AWS Systems Manager Parameter Store 之间存在连接问题。请检查任务网络配置。RequestCanceled: request context canceled caused by: context deadline exceeded | 
| ResourceInitializationError: failed to download env files: file download command: non empty error stream: RequestCanceled: request context canceled caused by: context deadline exceeded | ResourceInitializationError: failed to download env files: The task can't download the environment variable files from Amazon S3. 任务与 Amazon S3 之间存在连接问题。Check your task network configuration. service call has been retried 5 time(s): RequestCanceled: request context canceled caused by: context deadline exceeded | 
| ResourceInitializationError: failed to validate logger args::signal:killed | ResourceInitializationError: failed to validate logger args: The task cannot find the Amazon CloudWatch log group defined in the task definition. 任务与 Amazon CloudWatch 之间存在连接问题。Check your network configuration. : signal: killed | 
| ResourceInitializationError: unable to pull secrets or registry auth: pull command failed: : signal: killed | ResourceInitializationError: unable to pull secrets or registry auth: Check your task network configuration. : signal: killed | 

# 查看 Amazon ECS 已停止任务错误
<a name="stopped-task-errors"></a>

如果您在启动任务时遇到问题，则您的任务可能会因应用程序或配置错误而停止。例如，在您运行任务时，该任务显示 `PENDING` 状态，然后消失。

 如果您的任务由 Amazon ECS 服务创建，则 Amazon ECS 为维护该服务而采取的操作将在服务事件中发布。您可以在 AWS 管理控制台、AWS CLI、AWS 软件开发工具包、Amazon ECS API 或使用软件开发工具包和 API 的工具中查看事件。这些事件包括 Amazon ECS 停止和替换任务，因为任务中的容器已停止运行，或者 Elastic Load Balancing 的运行状况检查过多失败。

如果您的任务在 Amazon EC2 或外部计算机的容器实例上运行，您还可以查看容器运行时和 Amazon ECS 代理的日志。这些日志位于主机 Amazon EC2 实例或外部计算机上。有关更多信息，请参阅 [查看 Amazon ECS 容器代理日志](logs.md)。

## 过程
<a name="view-stopped-errors-procedure"></a>

------
#### [ Console ]

**AWS 管理控制台**

使用以下步骤可以通过控制台检查已停止任务的错误。要查看已停止的任务，必须更改此筛选条件选项。

已停止任务仅在控制台中显示 1 小时。

1. 在 [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2) 打开控制台。

1. 在导航窗格中，选择**集群**。

1. 在 **Clusters**（集群）页面上，选择集群。

1. 在 **Cluster : *name***（集群名称：名称）页面上，选择 **Tasks**（任务）选项卡。

1. 将筛选器配置为显示已停止的任务。对于**筛选所需状态**，请选择**已停止**。

   **已停止**选项显示已停止的任务，**任意所需状态**显示您的所有任务。

1. 选择要检查的已停止任务。

1. 在已停止任务所在行的**上次状态**列中，选择**已停止**。

   弹出窗口显示停止的原因。

------
#### [ AWS CLI ]

1. 列出集群中停止的任务。输出包含您需要对任务进行描述的 Amazon 资源名称（ARN）。

   ```
   aws ecs list-tasks \
        --cluster cluster_name \
        --desired-status STOPPED \
        --region region
   ```

1. 描述已停止任务以检索相关信息。有关更多信息，请参阅《AWS Command Line Interface API 参考》中的 [describe-tasks](https://docs.aws.amazon.com/cli/latest/reference/ecs/describe-tasks.html)**。

   ```
   aws ecs describe-tasks \
        --cluster cluster_name \
        --tasks arn:aws:ecs:region:account_id:task/cluster_name/task_ID \
        --region region
   ```

使用以下输出参数。
+ `stopCode` – 停止代码指示任务停止的原因，例如 ResourceInitializationError
+ `StoppedReason` – 任务停止的原因。
+ `reason`（在 `containers` 结构中）– 原因提供了有关已停止容器的更多详细信息。

------

## 后续步骤
<a name="additional-resources"></a>

查看已停止的任务，从而获取有关原因的信息。有关更多信息，请参阅 [Amazon ECS 已停止任务错误消息](stopped-task-error-codes.md)。

# 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 中提取容器映像的路径。

# 验证 Amazon ECS 已停止任务连接
<a name="verify-connectivity"></a>

有时，任务会因为网络连接问题而停止。这可能是间歇性问题，但很可能是因任务无法连接到端点所致。

## 测试任务连接
<a name="test-network"></a>

您可以使用 `AWSSupport-TroubleshootECSTaskFailedToStart` 运行手册来测试任务连接。使用运行手册时，您需要提供以下资源信息：
+ 任务 ID

  使用最近失败的任务的 ID。
+ 任务所在的集群

有关如何使用运行手册的信息，请参阅《AWS Systems Manager Automation 运行手册参考》**中的 [https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-aws-troubleshootecstaskfailedtostart.html](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-aws-troubleshootecstaskfailedtostart.html)。

运行手册会对任务进行分析。您可以在**输出**部分查看以下可能导致任务无法启动的问题的结果：
+ 与已配置的容器注册表的网络连接
+ VPC 端点连接
+ 安全组规则配置

## 修正 VPC 端点问题
<a name="fix-vpc-endpoints"></a>

当 `AWSSupport-TroubleshootECSTaskFailedToStart` 运行手册结果表明存在 VPC 端点问题时，请检查以下配置：
+ 创建端点的 VPC 和 VPC 端点需要使用私有 DNS。
+ 确认任务无法连接到的服务所用 AWS PrivateLink 端点与任务位于同一 VPC 中。有关更多信息，请参阅以下章节之一：    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonECS/latest/developerguide/verify-connectivity.html)
+ 为任务子网配置一条允许通过端口 443 的 HTTPS DNS（TCP）流量出站规则。有关更多信息，请参阅《Amazon Elastic Compute Cloud 用户指南》中的[配置安全组规则](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/changing-security-group.html#add-remove-security-group-rules)**。
+ 如果您使用自定义域名服务器，请确认 DNS 查询的设置。查询必须具有端口 53 的出站访问权限，并且使用 UDP 和 TCP 协议。此外，查询必须具有端口 443 上的 HTTPS 访问权限。有关更多信息，请参阅《Amazon Elastic Compute Cloud 用户指南》中的[配置安全组规则](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/changing-security-group.html#add-remove-security-group-rules)**。
+ 如果子网具有网络 ACL，则需要使用以下 ACL 规则：
  + 一条允许通过端口 1024-65535 的流量的出站规则。
  + 一条允许通过端口 443 的 TCP 流量的入站规则。

  有关如何配置规则的信息，请参阅《Amazon Virtual Private Cloud 用户指南》中的[使用网络 ACL 控制指向子网的流量](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html)**。

## 修正网络问题
<a name="fix-network-issues"></a>

当 `AWSSupport-TroubleshootECSTaskFailedToStart` 运行手册结果表明存在网络问题时，请检查以下配置：

### 在公有子网中使用 awsvpc 网络模式的任务
<a name="fix-network-issues-fargate-public"></a>

根据运行手册执行以下配置：
+ 对于在公有共子网中的任务，在启动任务时为**自动分配公有 IP** 指定**启用**。有关更多信息，请参阅 [将应用程序作为 Amazon ECS 任务运行](standalone-task-create.md)。
+ 您需要一个网关来处理互联网流量。任务子网的路由表需要有一个将流量指向该网关的路由。

  有关更多信息，请参阅《Amazon Virtual Private Cloud 用户指南》中的[在路由表中添加和删除路由](https://docs.aws.amazon.com/vpc/latest/userguide/WorkWithRouteTables.html#AddRemoveRoutes)**。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonECS/latest/developerguide/verify-connectivity.html)
+ 如果任务子网具有网络 ACL，则需要使用以下 ACL 规则：
  + 一条允许通过端口 1024-65535 的流量的出站规则。
  + 一条允许通过端口 443 的 TCP 流量的入站规则。

  有关如何配置规则的信息，请参阅《Amazon Virtual Private Cloud 用户指南》中的[使用网络 ACL 控制指向子网的流量](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html)**。

### 在私有子网中使用 awsvpc 网络模式的任务
<a name="fix-network-issues-fargate-private"></a>

根据运行手册执行以下配置：
+ 启动任务时，对于**自动分配公有 IP**，选择**已禁用**。
+  在 VPC 中配置一个 NAT 网关，以用于将请求路由到互联网。有关更多信息，请参阅《Amazon Virtual Private Cloud 用户指南》** 中的 [NAT 网关](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html)。
+ 任务子网的路由表需要有一个将流量指向 NAT 网关的路由。

  有关更多信息，请参阅《Amazon Virtual Private Cloud 用户指南》中的[在路由表中添加和删除路由](https://docs.aws.amazon.com/vpc/latest/userguide/WorkWithRouteTables.html#AddRemoveRoutes)**。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonECS/latest/developerguide/verify-connectivity.html)
+ 如果任务子网具有网络 ACL，则需要使用以下 ACL 规则：
  + 一条允许通过端口 1024-65535 的流量的出站规则。
  + 一条允许通过端口 443 的 TCP 流量的入站规则。

  有关如何配置规则的信息，请参阅《Amazon Virtual Private Cloud 用户指南》中的[使用网络 ACL 控制指向子网的流量](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html)**。

### 不在公有子网中使用 awsvpc 网络模式的任务
<a name="fix-network-issues-ec2-public"></a>

根据运行手册执行以下配置：
+ 创建集群时，对于 **Amazon EC2 实例的联网**下的**自动分配 IP**，选择**开启**。

  此选项将为实例的主网络接口分配一个公有 IP 地址。
+ 您需要一个网关来处理互联网流量。实例子网的路由表需要有一个将流量指向该网关的路由。

  有关更多信息，请参阅《Amazon Virtual Private Cloud 用户指南》中的[在路由表中添加和删除路由](https://docs.aws.amazon.com/vpc/latest/userguide/WorkWithRouteTables.html#AddRemoveRoutes)**。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonECS/latest/developerguide/verify-connectivity.html)
+ 如果实例子网具有网络 ACL，则需要使用以下 ACL 规则：
  + 一条允许通过端口 1024-65535 的流量的出站规则。
  + 一条允许通过端口 443 的 TCP 流量的入站规则。

  有关如何配置规则的信息，请参阅《Amazon Virtual Private Cloud 用户指南》中的[使用网络 ACL 控制指向子网的流量](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html)**。

### 在私有子网中不使用 awsvpc 网络模式的任务
<a name="fix-network-issues-fargate-private"></a>

根据运行手册执行以下配置：
+ 创建集群时，对于 **Amazon EC2 实例的联网**下的**自动分配 IP**，选择**关闭**。
+  在 VPC 中配置一个 NAT 网关，以用于将请求路由到互联网。有关更多信息，请参阅 *Amazon VPC 用户指南*中的 [NAT 网关](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html)。
+ 实例子网的路由表需要有一个将流量指向 NAT 网关的路由。

  有关更多信息，请参阅《Amazon Virtual Private Cloud 用户指南》中的[在路由表中添加和删除路由](https://docs.aws.amazon.com/vpc/latest/userguide/WorkWithRouteTables.html#AddRemoveRoutes)**。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonECS/latest/developerguide/verify-connectivity.html)
+ 如果任务子网具有网络 ACL，则需要使用以下 ACL 规则：
  + 一条允许通过端口 1024-65535 的流量的出站规则。
  + 一条允许通过端口 443 的 TCP 流量的入站规则。

  有关如何配置规则的信息，请参阅《Amazon Virtual Private Cloud 用户指南》中的[使用网络 ACL 控制指向子网的流量](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html)**。