从实例ID获取EC2实例元数据

3

你好,我正在使用boto来启动ec2 spot实例。我在获取实例id后无法获得实例主机名。

从实例本身可以使用最简单的方式 "wget -q -O - http://169.254.169.254/latest/meta-data/instance-id" 来获取。

但是我正在寻找一种通过实例id获取元数据的方法。

有任何帮助吗?

谢谢。

2个回答

3

实例元数据仅在实例上可用,但您可以使用EC2 API获取有关实例的许多信息。因此,如果您有实例ID,则可以执行以下操作:

import boto.ec2
conn = boto.ec2.connect_to_region('us-east-1')  # or whatever region you use
reservations = conn.get_all_instances(instance_ids='i-12345678')
instance = reservations[0].instances[0]
print(instance.public_dns_name)

将打印实例的公共DNS名称(即主机名)。

这符合您的要求吗?


我得到了以下错误回溯(Traceback): 最近的调用在最后: 文件“<stdin>”,第1行,in <module> TypeError: get_all_instances()收到了一个意外的关键字参数'instance_id' - roy
抱歉,参数应为“instance_ids”。它可以是ID列表或仅为单个值。我已更正示例代码。 - garnaat

0
你可以使用以下命令获取EC2实例的主机名:

wget -q -O - http://169.254.169.254/latest/meta-data/hostname"


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