私有子网 AWS Fargate 上的 Docker 个实例 运行

Docker instance running on private subnet AWS Fargate

我的 VPC 由 2 个 public 和 2 个私有子网组成,私有子网具有访问互联网的 NAt 网关,我的 docker 实例 运行ning 在接收外部 URL 的私有子网上(http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4) 作为输入并下载 content/file 并将文件存储在 s3

我在 public 子网中设置了应用程序负载均衡器并连接到 Fargate 实例

当我尝试 运行 并且日志显示 无法解析 NAME commondatastorage.googleapis.com

我了解到 docker 没有互联网连接

我在这里做错了什么,需要更正什么?

PS:在创建 fargate 服务时我禁用了自动分配 Public IP 作为实例应该在私有子网上

您可能已经查看了有关“Task Networking in AWS Fargate”的 AWS 页面

能够访问互联网的关键是 NAT,因此,如果它不起作用,您应该从检查错误开始。您可以从我链接的页面中的以下描述中看出它的重要性

In this configuration, the tasks can still communicate to other servers on the internet via the NAT gateway. They would appear to have the IP address of the NAT gateway to the recipient of the communication. If you run a Fargate task in a private subnet, you must add this NAT gateway. Otherwise, Fargate can’t make a network request to Amazon ECR to download the container image, or communicate with Amazon CloudWatch to store container metrics.

如果 NAT 由于某种原因无法正常工作,另一种方法可能是启用 Auto Assign Public IP,但定义一个安全组来阻止任何连接到您的网络的尝试私有 VPC 中的任务。通过这种方式,任务将能够到达解析 commondatastorage.googleapis.com

所需的 DNS 服务器