Dans le boto 2.38 normal, j'avais l'habitude d'accéder aux métadonnées d'instance (par exemple, obtenir le nom actuel de la pile), via boto's
boto.utils.get_instance_metadata()
Existe-t-il un équivalent dans boto3, ou dois-je aller à l'adresse http directe de niveau inférieur pour récupérer les métadonnées sur l'instance en cours d'exécution?
Non, toujours pas d'équivalent dans boto3, je viens de toucher cet écart moi-même.
Ils ont une demande de fonctionnalité ouverte pour cela https://github.com/boto/boto3/issues/31 qui fait référence à cette question.
Quant aux solutions de contournement,
vous pouvez continuer à utiliser boto.utils
ou utilisez urllib
/urllib2
pour faire les requêtes HTTP manuellement c'est-à-dire.
# 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 Quel est le moyen le plus rapide de HTTP GET en Python? pour une introduction 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.
Vous pouvez utiliser ec2-metadata .
Voici un exemple de la docs montrant comment obtenir votre région EC2:
>>> from ec2_metadata import ec2_metadata
>>> print(ec2_metadata.region)
us-east-1