Amazon Elastic Container Service 无法拉取容器报错

Cannot Pull Container Error in Amazon Elastic Container Service

我正在尝试在 Amazon ECS 中启动任务,但出现以下错误:

CannotPullContainerError: Error response from daemon, request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers).

我能够在我的本地环境中拉取容器并且它工作正常但是在尝试在亚马逊环境中部署时出现此错误。

来自亚马逊的suggested checks如下:

  • 确认用于运行 任务的子网在路由table 中有到互联网网关或NAT 网关的路由。 注意:您可以使用 AWS PrivateLink 而不是 Internet 网关或 NAT 网关。为避免错误,请务必正确配置 AWS PrivateLink 或 HTTP 代理。
  • 如果您在 public 子网中启动任务,请在 Amazon EC2 控制台中启动任务时为自动分配 public IP 选择启用。这允许您的任务具有出站网络访问权限以拉取图像。
  • 如果您在 Amazon VPC 中使用 Amazon 提供的 DNS,请确认附加到实例的安全组允许 HTTPS(端口 443)出站访问。 如果您使用的是自定义 DNS,请确认在端口 53 上允许 DNS(UDP 和 TCP)出站访问,在端口 443 上允许 HTTPS 访问。
  • 确认您的网络 ACL 规则没有阻止到注册表的流量。

此错误最终指向您的容器 运行 所在的子网或 MicroVM 与 ECS 服务之间的网络连接问题。

默认情况下它将遍历 public 互联网(除非您设置了正确的 VPC 端点)。因此,如果您没有出站互联网支持,您将无法连接到 ECR 端点。