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

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

【问题讨论】:

    标签: python amazon-web-services amazon-ec2 backend


    【解决方案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。这向更广泛的社区表明您已经找到了解决方案,并为回答者和您自己提供了一些声誉。没有义务这样做。
    猜你喜欢
    • 2011-07-01
    • 1970-01-01
    • 2010-10-12
    • 2020-10-15
    • 2021-08-13
    • 1970-01-01
    • 2017-08-07
    • 2018-03-13
    • 2013-02-27
    相关资源
    最近更新 更多