boto3 equivalent to boto.utils.get_instance_metadata()?

后端 未结 2 959
面向向阳花
面向向阳花 2021-01-01 10:40

In regular boto 2.38 I used to access instance metadata (e.g. get current stack-name), through boto\'s

boto.utils.get_instance_metadata()

相关标签:
2条回答
  • 2021-01-01 11:18

    Nope, still no equivalent in boto3, just hit this gap myself.
    They have an open feature request for this https://github.com/boto/boto3/issues/313 that references this question.

    As for workarounds,
    you can continue to use boto.utils or use urllib/urllib2 to do the HTTP requests manually ie.

    # 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()
    

    see What is the quickest way to HTTP GET in Python? for a quick intro on urllib and http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-instance-metadata.html#instancedata-data-categories for the URI structure of the metadata service.

    0 讨论(0)
  • 2021-01-01 11:26

    You could use the third-party library ec2-metadata.

    Here an example from the docs showing how to get your EC2 region:

      pip install ec2-metadata
    
      >>> from ec2_metadata import ec2_metadata
      >>> print(ec2_metadata.region)
      us-east-1
    
    0 讨论(0)
提交回复
热议问题