首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >等同于boto.utils.get_instance_metadata()的boto3?

等同于boto.utils.get_instance_metadata()的boto3?
EN

Stack Overflow用户
提问于 2015-07-26 04:29:37
回答 3查看 15.1K关注 0票数 34

在常规的boto 2.38中,我习惯于通过boto的访问实例元数据(例如,获取当前的栈名)

代码语言:javascript
复制
boto.utils.get_instance_metadata()

在boto3中是否有等效项,或者我是否需要转到更低级别的直接http地址来获取有关运行实例的元数据?

EN

回答 3

Stack Overflow用户

发布于 2015-11-16 19:05:54

不,在boto3中仍然没有等价物,我自己就达到了这个差距。

他们有一个引用此问题的针对此https://github.com/boto/boto3/issues/313的开放功能请求。

至于变通方法,

您可以继续使用boto.utils或使用urllib/urllib2手动完成HTTP请求。

代码语言:javascript
复制
# 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()

有关urllib的快速介绍,请参阅What is the quickest way to HTTP GET in Python?;有关元数据服务的URI结构,请参阅http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-instance-metadata.html#instancedata-data-categories

票数 19
EN

Stack Overflow用户

发布于 2020-03-23 18:54:14

您可以使用第三方库ec2-metadata

下面是docs中的一个示例,展示了如何获取您的EC2区域:

代码语言:javascript
复制
  pip install ec2-metadata

  >>> from ec2_metadata import ec2_metadata
  >>> print(ec2_metadata.region)
  us-east-1
票数 4
EN

Stack Overflow用户

发布于 2022-02-17 08:08:58

您可以从botocore中的IMDSFetcher获取特定的元数据

代码语言:javascript
复制
from botocore.utils import IMDSFetcher

IMDSFetcher()._get_request("/latest/meta-data/instance-type", None).text

这也适用于强制执行IMDSv2的实例。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31630822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档