对于AWS Fargate,正确的元数据端点是
http://169.254.170.2/v2/metadata
.
参考文献-
任务元数据端点版本2可用于在平台版本v1.1.0或更高版本上使用Fargate启动类型的任务,以及使用EC2启动类型的任务,这些任务也使用awsvpc网络模式,并且在运行至少版本1.17.0的Amazon ECS容器代理的Amazon EC2基础设施上启动。
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-metadata-endpoint-v2.html
但是,该端点只返回任务的privateIp部分,而不返回publicIp。由于您使用的是python,所以可以使用boto3模块通过从上述元数据结果查询privateIp来获取publicIp。
下面是我刚刚用自己的任务私有IP测试的python代码示例。
import boto3
client = boto3.client('ec2')
response = client.describe_network_interfaces(
Filters=[
{
'Name': 'addresses.private-ip-address',
'Values': [
'172.31.6.195',
]
},
]
)
response ['NetworkInterfaces'][0]['Association']['PublicIp']
//100.x.x.x