如何解决我的 Amazon EC2 启动类型任务中的“CannotPullContainerError”错误?

1 分钟阅读
0

我在 Amazon Elastic Container Service(Amazon ECS)中启动 EC2 任务时收到以下错误: “CannotPullContainerError”。

简短描述

CannotPullContainerError 会因以下任一问题而出现:

  • 由于网络配置不正确,Amazon Elastic Compute Cloud(Amazon EC2)启动类型任务无法拉取映像。
  • 您的 AWS Identity and Access Management(IAM)角色没有拉取映像的正确权限。
  • DockerHub 存在速率限制。
  • 映像名称或标签不存在。

要对导致 Amazon ECS 任务无法启动的错误进行故障排除,请使用 AWSSupport-TroubleshootECSTaskFailedToStart 运行手册。然后,按照问题的相关故障排除步骤进行操作。

解决方法

重要事项:

  • 在与您的 ECS 集群资源所在的同一 AWS 区域内使用 AWSSupport-TroubleshootECSTaskFailedToStart 运行手册。
  • 使用运行手册时,必须使用最近失败的任务 ID。如果失败的任务是 Amazon ECS 服务的一部分,则在服务中使用最近失败的任务。在自动化过程中,失败的任务必须在 ECS:DescribeTasks 中可见。默认情况下,已停止的 ECS 任务在进入已停止状态后的 1 小时内保持可见。使用最近失败的任务 ID 可防止任务状态清理功能在自动化过程中导致分析中断。

有关如何启动运行手册的说明,请参阅 AWSSupport-TroubleshootECSTaskFailedToStart。根据自动化的输出,使用以下手动故障排除步骤之一。

您的 Amazon ECS 容器实例网络配置不正确

如果您的 Amazon ECS 容器实例没有互联网连接,则它无法访问 Amazon Elastic Container Registry(Amazon ECR)端点。如果未与端点建立连接,实例就无法拉取映像。要验证您的 ECS 容器实例是否可以接入互联网,请审核以下几点:

您的 IAM 角色没有拉取映像的正确权限

确认与实例配置文件关联的实例 IAM 角色有权访问 Amazon ECR 存储库。

注意: AWS 托管式策略 AmazonEC2ContainerRegistryReadOnly 提供拉取映像所需的最低权限。

已达到 DockerHub 拉取速率限制

如果您尝试从 DockerHub 拉取映像且已达到拉取速率限制,那么您会收到以下错误消息:

“CannotPullContainerError:检查映像已重试 5 次:httpReaderSeeker:无法打开:意外状态代码 https://registry-1.docker.io/v2/manifests/sha256:2bb501e6429 请求太多 - 服务器消息:toomanyrequests:”

要解决此问题,请查看如何解决 Amazon ECS 中的错误“CannotPullContainerError: 您已达到拉取速率限制”?

映像名称或标签不存在

如果在任务定义中定义的 Amazon ECR 中托管的映像或其关联标签不存在,则您会收到以下错误:

“Cannotpullcontainererror:拉取映像清单已重试 1 次:无法解析引用 123456789.dkr.ecr.ap-southeast-2.amazonaws.com/image-name:tag: 123456789**.dkr.ecr.ap-southeast-2.amazonaws.com/image-name:tag:未找到**”

要解决此问题,请验证任务定义中的映像字段。确认相应的存储库和定义的标签存在于您要从中拉取的容器注册表中。

如果您的任务从 Amazon ECR 以外的注册表中拉取映像并且缺少信息,则您会收到不同的错误。如果映像不存在、标签不存在或未提供注册表凭证,则会出现以下错误:

“Cannotpullcontainererror:拉取映像清单已重试 1 次:无法解析引用 docker.io/library/invalid-name:non-existenttag:拉取访问被拒绝,存储库不存在或可能需要授权:服务器消息:insufficient_scope:授权失败”

要解决此问题,请检查任务定义中的映像字段。确认映像存在于相应的容器注册表中。如果映像存在,则确保您提供正确的凭证。有关详细信息,请参阅任务的私有注册表身份验证

AWS 官方
AWS 官方已更新 1 年前