Amazon web services AWS Fargate-不能拉出容器错误(500)?

Amazon web services AWS Fargate-不能拉出容器错误(500)?,amazon-web-services,amazon-ec2,amazon-ecs,aws-fargate,Amazon Web Services,Amazon Ec2,Amazon Ecs,Aws Fargate,我正在使用AWS ECS托管我的服务。当我试图用fargate定义任务时,我得到了下面的问题 CannotPullContainerError:API错误(500):等待连接时已取消Get:net/http:request(等待标头时已超出Client.Timeout) 此外,我还授予了在IAM用户中访问ECR的完全权限。请帮我解决这个问题 看看这里: 特别是 您在下面看到的错误通常是由于缺少internet 访问以拉取图像。图像拉取通过网络进行 任务使用的接口,因此共享安全组和 路由规则 请检

我正在使用AWS ECS托管我的服务。当我试图用fargate定义任务时,我得到了下面的问题

CannotPullContainerError:API错误(500):等待连接时已取消Get:net/http:request(等待标头时已超出Client.Timeout)

此外,我还授予了在IAM用户中访问ECR的完全权限。请帮我解决这个问题

看看这里:

特别是

您在下面看到的错误通常是由于缺少internet 访问以拉取图像。图像拉取通过网络进行 任务使用的接口,因此共享安全组和 路由规则

请检查以下配置:

如果在没有公共IP的情况下启动任务,请确保 子网上的路由表具有“0.0.0.0/0”到NAT网关或 NAT实例以确保访问internet。如果您的路线表 作为一个互联网网关,它就像一个防火墙,防止 连接正在进行中。如果您正在启动具有公共资源的任务 IP,确保子网上的路由表具有“0.0.0.0/0” 连接到internet网关,以确保您能够使用公共IP 成功访问入口流量。验证您的安全组规则 该任务允许出站访问。这里的默认值通常为“全部” 流量为0.0.0.0/0。如果这些网络更改都不适用于 如果您或他们没有解决您的问题,请让我们知道,以便我们可以 进一步协助


我已经回答了这个问题,但是复制粘贴并没有坏处

缺少创建工作NAT网关的规范。在亚马逊技术人员不断重复你“只是”需要私有IP+NAT,然而这不是真的。我自己也为此挣扎了很多次,但最终在Fargate服务中没有使用公共IP的情况下使它正常工作

要使Fargate服务在没有公共IP的情况下访问internet,您需要设置一个VPC,该VPC有2个子网:

  • 一个公共子网,具有允许双向互联网访问的互联网网关
  • 带有NAT网关的专用子网,只允许出站访问互联网
您可以通过两种方式创建这样一个专有网络:进入
服务
专有网络
专有网络仪表板
,点击
启动专有网络向导
并选择
带有公共和私有子网的专有网络“
;或手动:

注意:以下所有步骤均在
服务
专有网络

  • 转到
    您的专有网络
    创建专有网络
  • 转到
    子网
    创建子网
    两次
  • 专用
    子网
  • 将其连接到焦点所在的VPC。无论您喜欢哪一块苹果酒,哪一个可用区域
  • 公共
    子网
  • 将其连接到焦点所在的VPC。无论您喜欢哪一块苹果酒,哪一个可用区域
  • 转到
    互联网网关
    创建互联网网关
  • 随便你怎么说都行
  • 选择新创建的
    互联网网关
    操作
    连接到专有网络
    ,并将其连接到焦点所在的专有网络
  • 转到
    NAT网关
    创建NAT网关
  • 重要提示:选择
    公共子网
  • 创建新的EIP
    或使用现有的EIP
  • 等待网关变为可用
  • 转到
    路线表
    创建路线表
    两次
  • 专用
    路由表
  • 将其连接到焦点所在的VPC
  • 回到列表,选择路由表
  • 路线
    底部的选项卡,
    编辑路线
  • 添加路由
    ,目的地:
    0.0.0/0
    ,以先前创建的NAT网关为目标,并
    保存路由
  • 仍在选择路由表
    操作和
    设置主路由表(如果尚未选择)
  • 公共
    路由表
  • 将其连接到焦点所在的VPC
  • 回到列表,选择路由表
  • 路线
    底部的选项卡,
    编辑路线
  • 添加路由
    ,目的地:
    0.0.0/0
    ,以先前创建的Internet网关为目标,然后
    保存路由
  • 底部的
    子网关联
    选项卡,
    编辑子网关联
  • 选择
    公共
    子网,
    保存
  • 把黄瓜放在眼睛上

  • 您在
    公共
    子网中提供的每项服务都将具有双向internet访问权限,而您在
    私有
    子网中提供的每项服务都将仅具有传出internet访问权限(是的,
    专用子网中没有公共IP的Fargate和EC2服务将可以访问互联网).

    我想补充一点:也要小心,不要意外地将您的容器放入没有internet访问的私有子网。为什么AWS在简化其服务方面如此差劲?我突然看到了这一点;它在历史上一直有效,我认为我们的基础设施中没有任何变化…@kev,因为它不是JUt“易于使用”。简单性总是会带来折衷,导致灵活性有限。AWS基本上是租用您的基础设施,而基础设施的管理是您的责任。尽管如此,他们推出了更简单的服务,如ECS的Fargate launch类型(但以gr为单位)