我有一个AWS FARGATE Task,它正在运行一个相对简单的python应用程序(具有从python:3.6-stretch构建的Docker映像。)使用Amazon EC2 Tasks可以正常运行(其中EC2主机提供了docker容器);但我正在尝试将其移至FARGATE。
当我在Fargate中部署映像时,它们尝试使用URL获取本地IPv4数据:
'http://169.254.169.254/latest/meta-data/local-ipv4'
我得到错误:
HTTPConnectionPool(host='169.254.169.254', port=80): Max retries exceeded with url: /latest/meta-data/local-ipv4 (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f086aa8d438>: Failed to establish a new connection: [Errno 22] Invalid argument',))
附带说明一下,我的FARGATE容器位于一个私有子网中(配置了nat网关,实例可以连接到互联网)。 IP空间是10.160.16.0/20。
该图像基于python:3.6-stretch docker图像。
我需要做些什么来获得FARGATE任务,以便能够访问本地链接地址?
TIA!
最佳答案
我相信这是因为您为AWS Fargate使用了错误的终端节点。根据下面列出的文档,您的IP错误。
使用169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
获取IAM元数据。
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html
我希望这有帮助 :)