Отображение имени экземпляра EC2 с использованием Boto 3
Я не уверен, как отобразить имя моего экземпляра в AWS EC2, используя boto3
Это код, который у меня есть:
import boto3
ec2 = boto3.resource('ec2', region_name='us-west-2')
vpc = ec2.Vpc("vpc-21c15555")
for i in vpc.instances.all():
print(i)
То, что я получаю взамен,
...
...
...
ec2.Instance(id='i-d77ed20c')
![введите описание изображения здесь]()
Я могу изменить i
на i.id
или i.instance_type
, но когда я попробую name
, я получаю:
AttributeError: 'ec2.Instance' object has no attribute 'name'
Каков правильный способ получить имя экземпляра?
Ответы
Ответ 1
Могут быть другие способы. Но с вашей кодовой точки зрения должно работать следующее.
>>> for i in vpc.instances.all():
... for tag in i.tags:
... if tag['Key'] == 'Name':
... print tag['Value']
Одно решение для линейки, если вы хотите использовать мощное понимание Python:
inst_names = [tag['Value'] for i in vpc.instances.all() for tag in i.tags if tag['Key'] == 'Name']
print inst_names
Ответ 2
В AWS EC2 экземпляр помечен именем tag.
Чтобы получить значение тега Name для данного экземпляра, вам нужно запросить экземпляр для этого тега:
См. Получение тегов из экземпляров AWS с помощью boto