web-dev-qa-db-fra.com

Affichage du nom de l'instance EC2 à l'aide de Boto 3

Je ne sais pas comment afficher le nom de mon instance dans AWS EC2 à l'aide de boto3

Voici une partie du code que j'ai:

import boto3

ec2 = boto3.resource('ec2', region_name='us-west-2')
vpc = ec2.Vpc("vpc-21c15555")
for i in vpc.instances.all():
    print(i)

Ce que je reçois en retour c'est

...
...
...
ec2.Instance(id='i-d77ed20c')

enter image description here

Je peux changer i en i.id ou i.instance_type mais quand j'essaie name j'obtiens:

AttributeError: 'ec2.Instance' object has no attribute 'name'

Quelle est la bonne façon d'obtenir le nom de l'instance?

17
Liondancer

Il peut y avoir d'autres moyens. Mais de votre point de vue de code, ce qui suit devrait fonctionner.

>>> for i in vpc.instances.all():
...   for tag in i.tags:
...     if tag['Key'] == 'Name':
...       print tag['Value']

Une solution unique si vous souhaitez utiliser la puissante compréhension de liste de Python:

inst_names = [tag['Value'] for i in vpc.instances.all() for tag in i.tags if tag['Key'] == 'Name']
print inst_names
18
helloV

Dans AWS EC2, une instance est balisée avec un nom tag .

Afin d'obtenir la valeur de la balise Name pour une instance donnée, vous devez interroger l'instance de cette balise:

Voir Obtention de balises à partir d'instances AWS avec boto

6
Rodrigo M