Tag-Funktion in ec2. Es ist bequem, wie eine Umgebungsvariable zu verwenden. Sehen Sie sich ein bestimmtes Tag an und ändern Sie die von der Anwendung zur Laufzeit gelesene Einstellungsdatei. Toka Toka. ec2 verfügt über API zum Abrufen eigener Metadaten. Versuchen wir es mit boto3.
Machen Sie als vorläufige Vorbereitung zunächst access_key_id und secret_access_key von der Anwendungsseite aus sichtbar. Sie können solide in den Quellcode schreiben, aber es ist nicht sicher, also exportieren Sie es in die Shell.
$ export AWS_KEY='some-key'
$ export AWS_SECRET='some-secret'
$ export AWS_REGION='ap-northeast-1'
Versuchen Sie, dies von Python zu bekommen.
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'
Wenn Sie bestätigen können, dass Sie es erhalten können, versuchen Sie, das Ihnen tatsächlich zugewiesene Tag zu erhalten.
console
>>> import os
>>> import urllib2
>>> from boto3.session import Session
>>>
#Meine Instanz aus der Metadaten-API-Holen Sie sich die ID.
>>> instance_id = urllib2.urlopen('http://169.254.169.254/latest/meta-data/instance-id').read()
>>>
#Erstellen Sie eine Sitzung für 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'))
>>>
#Erstellen Sie ein ec2-Objekt.
>>> ec2 = aws.resource('ec2')
# instance-Erstellen Sie ein Instanzobjekt, indem Sie die ID angeben. Das bin sozusagen ich selbst.
>>> instance = ec2.Instance(id=instance_id)
>>>
#Holen Sie sich das Tag vollständig. Es ist etwas schwierig zu bedienen, also gestalte ich es.
>>> tags = dict([(tag['Key'], tag['Value']) for tag in instance.tags])
#Es ist hier aufgelistet. Sollte sein.
>>> tags
{'Name': 'API_PROD', ...}
Persönlich füge ich immer ein Env-Tag hinzu und versuche, die zu lesende Einstellungsdatei durch Betrachten zu bestimmen. Wenn Sie dies tun, können Sie die Einstellungen um db und den Bucket von s3 zur Laufzeit auch mit derselben ami ändern, was praktisch und praktisch ist :-)