Viendo el nombre de la instancia de EC2 usando Boto 3

No estoy seguro de cómo mostrar el nombre de mi instancia en AWS EC2 utilizando boto3

Este es parte del código que tengo:

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

Lo que obtengo a cambio es

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

introduzca la descripción de la imagen aquí

Puedo cambiar i para que sea i.id o i.instance_type pero cuando bash el name obtengo:

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

¿Cuál es la forma correcta de obtener el nombre de instancia?

Puede haber otras formas. Pero desde el punto de vista de su código, lo siguiente debería funcionar.

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

Una solución de línea si desea utilizar la poderosa comprensión de la lista de Python:

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

En AWS EC2, una instancia está etiquetada con una etiqueta de nombre.

Para obtener el valor de la etiqueta de nombre para una instancia determinada, debe consultar la instancia para esa etiqueta:

Consulte Obtención de tags de instancias de AWS con boto.