2016-01-12 3 views
12

Я не уверен, как отображать имя моего экземпляра в AWS EC2 с помощью boto3Отображение имени EC2 экземпляра с помощью Boto 3

Это часть кода, у меня есть:

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') 

enter image description here

Я могу сп Анж i быть i.id или i.instance_type, но когда я пытаюсь name я получаю:

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

Что такое правильный способ получить имя экземпляра?

ответ

12

Там могут быть и другие способы. Но с вашей кодовой точки зрения должно работать следующее.

>>> 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 
4

В AWS EC2 экземпляр с пометкой с именем tag.

Для того, чтобы получить значение имени тега для данного экземпляра, необходимо запросить экземпляр для этого тега:

См Obtaining tags from AWS instances with boto