AWS Fargate 集群无法使用 NAT 和 Internet 网关访问 Internet

AWS Fargate Cluster unable to access Internet with NAT and Internet Gateways in place

我正在尝试将容器部署到 AWS 上的私有网络 Fargate 集群。我的单个 VPC 上确实有一个互联网网关:

而且我在我的 cluster/services 所在的同一个 VPC 中确实有一个用于该特定子网的 NAT 网关:

路由似乎也适用于该子网:

服务的安全组不阻止任何传入连接:

但是我的容器甚至没有以臭名昭著的异常启动:CannotPullContainerError: Error response from daemon:Get https://registry-name/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) 为什么?谢谢。

您没有将子网配置为使用 NAT 网关。您的路由 table 当前将流量直接发送到 IGW,这使得子网成为 public 子网,而不是私有子网,这意味着该子网中的任何内容都需要分配 public IP给它。与其他资源位于同一子网中的 NAT 网关不会神奇地为这些资源提供 Internet 访问权限,您必须适当地配置路由 tables。

您的网络需要这样配置:

Public 子网:

  • 附上IGW
  • NAT 网关
  • 需要从 Internet 访问的任何其他 public 资源,例如 public 负载平衡器。

私有子网:

  • 到 public 子网中 NAT 网关的路由。 没有到 IGW 的路由。