有没有方法获取ECS实例元数据?

3

从运行的aws ecs实例中,我可以获取其集群名称和容器实例ID的详细信息吗?

在EC2中,我可以运行以下curl命令来获取其实例ID,我在ECS中是否有类似的命令?

curl http://169.254.169.254/latest/meta-data/instance-id
2个回答

2
只是为了重申@per-cederberg在他的评论中所说的话,以防它被埋没(还有一些免费的甜头),运行的容器可以调用http://172.17.0.1:51678/v1/metadata来获取相同的信息。

2
回答自己的问题,在AWS ECS集群中,有一个守护进程在运行,你可以通过以下命令排队它的元数据。
$ curl http://localhost:51678/v1/tasks | python -mjson.tool


$ curl -s http://localhost:51678/v1/metadata | python -mjson.tool

{
    "Cluster": "application-1",
    "ContainerInstanceArn": "arn:aws:ecs:us-east-2:1234567890:container-instance/ee4d3451d-2de3-4180-b1c6-023ed6e8c343",
    "Version": "Amazon ECS Agent - v1.14.1 (467c3d7)"
}

这将对您有用,如果您需要从ECS集群中注销自己,例如,您在ECS集群中使用spot实例。

参考:

ecs代理内省


1
似乎我可以从主机实例访问http://localhost:51678/v1/metadata,但无法从正在运行的容器内部访问。从正在运行的容器中,我得到了“无法连接到127.0.0.1端口51678:连接被拒绝”的错误信息。 - grayaii
2
在ECS上运行的Docker容器内尝试使用curl "http://172.17.0.1:51678/v1/tasks?dockerid=${HOSTNAME}"命令。${HOSTNAME}是您的短Docker容器ID,用于过滤任务列表。 - Per Cederberg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接