从使用桥接模式运行的常规ECS容器或从标准EC2实例运行,我通常运行
curl http://169.254.169.254/latest/meta-data/local-ipv4
检索我的IP。
在使用awsvpc网络模式运行的ECS容器中,我得到了底层EC2实例的IP,这不是我想要的。我希望ENI的地址附在我的容器上。我怎么做?
AWS容器代理将新的便捷环境变量注入AWS ECS中的每个容器:${ECS_CONTAINER_METADATA_URI}
这包含元数据端点的URL,所以现在就可以了
curl ${ECS_CONTAINER_METADATA_URI}
输出看起来像
{
"DockerId":"redact",
"Name":"redact",
"DockerName":"ecs-redact",
"Image":"redact",
"ImageID":"redact",
"Labels":{ },
"DesiredStatus":"RUNNING",
"KnownStatus":"RUNNING",
"Limits":{ },
"CreatedAt":"2019-04-16T22:39:57.040286277Z",
"StartedAt":"2019-04-16T22:39:57.29386087Z",
"Type":"NORMAL",
"Networks":[
{
"NetworkMode":"awsvpc",
"IPv4Addresses":[
"172.30.1.115"
]
}
]
}
在关键的Networks
下你会找到IPv4Address