2015-07-25 1 views
25

En Boto régulière 2,38 I utilisé pour accéder aux métadonnées d'instance (par exemple, obtenir pile nom actuel), par le biaisboto3 équivalent à boto.utils.get_instance_metadata()?

de Boto
boto.utils.get_instance_metadata() 

Y at-il un équivalent à boto3, ou dois-je aller au niveau bas adresse http directe récupérer des métadonnées sur l'instance en cours d'exécution?

Répondre

14

Non, toujours pas d'équivalent dans boto3, je viens d'atteindre moi-même cette lacune.
Ils ont une demande ouverte pour cette https://github.com/boto/boto3/issues/313 qui fait référence à cette question.

Quant aux solutions de contournement,
vous pouvez continuer à utiliser boto.utils ou utiliser urllib/urllib2 pour faire les requêtes HTTP manuellement par exemple.

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

voir What is the quickest way to HTTP GET in Python? pour une intro rapide sur urllib et http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-instance-metadata.html#instancedata-data-categories pour la structure URI du service de métadonnées.

+2

est-ce * encore * vrai ?! siiiiiiigh – dwanderson

+0

@dwanderson Malheureusement! – jimy