Fonction de balise fournie dans ec2. Il est pratique à utiliser comme une variable d'environnement. Examinez une balise spécifique et modifiez le fichier de paramètres lu par l'application lors de l'exécution. Toka Toka. ec2 a API pour obtenir vos propres métadonnées. Essayons-le avec boto3.
Tout d'abord, comme préparation préliminaire, rendez access_key_id et secret_access_key visibles du côté de l'application. Il est normal d'écrire un solide dans le code source, mais ce n'est pas sécurisé, alors exportez-le vers le shell.
$ export AWS_KEY='some-key'
$ export AWS_SECRET='some-secret'
$ export AWS_REGION='ap-northeast-1'
Essayez d'obtenir cela de python.
console
>>> import os
>>> os.environ.get('AWS_KEY')
'some-key'
>>> os.environ.get('AWS_SECRET')
'some-secret'
>>> os.environ.get('AWS_REGION')
'ap-northeast-1'
Si vous pouvez confirmer que vous pouvez l'obtenir, essayez d'obtenir le tag qui vous est réellement attribué.
console
>>> import os
>>> import urllib2
>>> from boto3.session import Session
>>>
#Mon instance de l'API de métadonnées-Récupérez l'identifiant.
>>> instance_id = urllib2.urlopen('http://169.254.169.254/latest/meta-data/instance-id').read()
>>>
#Créez une session pour aws api.
>>> aws = Session(aws_access_key_id=os.environ.get('AWS_KEY'),
... aws_secret_access_key=os.environ.get('AWS_SECRET'),
... region_name=os.environ.get('AWS_REGION'))
>>>
#Créez un objet ec2.
>>> ec2 = aws.resource('ec2')
# instance-Créez un objet d'instance en spécifiant id. Pour ainsi dire, c'est moi-même.
>>> instance = ec2.Instance(id=instance_id)
>>>
#Obtenez la balise complètement. C'est un peu difficile à utiliser, donc je le façonne.
>>> tags = dict([(tag['Key'], tag['Value']) for tag in instance.tags])
#Il est répertorié ici. Devrait être.
>>> tags
{'Name': 'API_PROD', ...}
Personnellement, j'ajoute toujours une balise Env, et j'essaye de décider du fichier de paramètres à lire en le regardant. Si vous faites cela, vous pouvez modifier les paramètres autour de db et du bucket de s3 au moment de l'exécution, même avec le même ami, ce qui est pratique et pratique :-)
Recommended Posts