我的VPC包含2个公共子网和2个私有子网,私有子网具有访问互联网的NAt网关,而我的docker实例在私有子网上运行,该私有子网接收外部URL(http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4)作为输入并下载内容/文件,将文件存储在s3
我在公共子网中设置了应用程序负载平衡器,并连接到Fargate实例
当我尝试运行时,日志说 NAME无法解析commondatastorage.googleapis.com
我了解到docker没有互联网连接
我在这里做错了什么,需要纠正什么?
PS:在创建Fargate服务时,我已将“自动分配公用IP”作为实例禁用,应该位于私有子网中
答案 0 :(得分:0)
您可能已经检查过有关“ Task Networking in AWS Fargate”的AWS页面
能够访问Internet的关键是NAT,因此,如果它不起作用,则应从检查错误开始。您可以从我链接的页面的以下描述中看到它的重要性
在这种配置下,任务仍可以通过NAT网关与Internet上的其他服务器通信。它们似乎具有到通信收件人的NAT网关的IP地址。如果您在专用子网中运行Fargate任务,则必须添加此NAT网关。否则,Fargate无法向Amazon ECR发出网络请求以下载容器映像,或与Amazon CloudWatch进行通信以存储容器指标。
如果由于某些原因NAT无法正常工作,另一种方法可能是启用Auto Assign Public IP
,但定义一个安全组,该安全组将阻止任何尝试连接到专用VPC中的任务的尝试。这样,任务将能够访问解析commondatastorage.googleapis.com