有没有办法在 ec2 实例中获取实例 ID [重复]

Posted

技术标签:

【中文标题】有没有办法在 ec2 实例中获取实例 ID [重复]【英文标题】:Is there a way to obtain the instance id within an ec2 instance [duplicate] 【发布时间】:2017-10-04 14:07:18 【问题描述】:

我尝试在 ec2 实例上启动服务。该服务应该发送实例的ID。我知道这可以使用curl http://0.0.0.0/latest/meta-data 之类的东西来获得。有没有其他方法可以直接从实例 shell 或 python 中的某些 API 获取元数据?

【问题讨论】:

【参考方案1】:

Amazon EC2 instance metadata 可以通过以下方式访问:

http://169.254.169.254/latest/meta-data/

检索发出请求的实例的 ID:

http://169.254.169.254/latest/meta-data/instance-id/

这可以通过 curl、wget、网络浏览器或任何调用检索 HTTP 页面的工具来检索。

如果您希望以编程方式进行,这里有一些来自boto3 equivalent to boto.utils.get_instance_metadata()? 的代码:

# Python2
import urllib2
instanceid = urllib2.urlopen('http://169.254.169.254/latest/meta-data/instance-id').read()

# Python3
import urllib.request
instanceid = urllib.request.urlopen('http://169.254.169.254/latest/meta-data/instance-id').read().decode()

还有一个 boto.utils.get_instance_metadata() call in boto(但不是 boto3)将实例元数据作为嵌套 Python 字典返回。

【讨论】:

这真的很有用!!非常感谢 嗨@WangNick,如果这个或任何答案解决了您的问题,请点击复选标记考虑accepting it。这向更广泛的社区表明您已经找到了解决方案,并为回答者和您自己提供了一些声誉。没有义务这样做。

以上是关于有没有办法在 ec2 实例中获取实例 ID [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在Python AWS boto API中获取EC2实例ID的容器实例列表

从 EC2 实例中查找区域

有没有办法让 EC2 实例中的请求保持超过 60 秒?

具有角色的ec2实例AmazonEC2RoleforSSM无法在ansible中执行EC2操作

如何在实例中获取 AWS OpsWorks 实例 ID?

有没有办法从 ELB 自动终止不健康的 EC2 实例?