ОБНОВЛЕНИЕ:
Я сделал то, что было предложено ниже, однако я все еще получал KeyError: 'Name' в выходных данных, даже если выходные данныебыло правильно.
Это был вывод:
us-west-1 EC2Connection:
ec2.us-west-1.amazonaws.com
Showing all of your current instances
Proxy-44-1000-Enrollments
Proxy-45-1000-Enrollments
Proxy-48-1000-Enrollments
Proxy-49-1000-Enrollments
Proxy-59-1000-Enrollments
Proxy-67-1000-Enrollments
Traceback (most recent call last): File "/Users/xxxxx/xxxx/boto/instanceid.py",
line 43, in <module> print "\t%s" % (instance.tags['Name']) if instance.state ==
'running' else instance.state KeyError: 'Name'
Исходный вопрос:
Я пытаюсь сброситьсписок идентификаторов экземпляров вместе с их тегом «Name» из AWS с помощью boto.Я нашел в Интернете метод, который можно прикрепить к объекту экземпляра, который называется __dict__
, который, кажется, работает хорошо, однако я хотел извлечь тег «name» только при использовании этого метода, но я продолжаю получать сообщение об ошибке »Ключевая ошибка: «Имя» «
В основном, этот код работает:
# Creating connection object to EC2
conn = boto.connect_ec2()
regions = boto.ec2.regions()
# the 5 element in the array is "us-west-1" and setting the object to connect
us = regions[5]
print us.name
conn_us = us.connect()
print conn_us
filters = {'key-name' : 'misc-key'}
all_inst = conn_us.get_all_instances(filters=filters)
print "Showing all of your current instances"
for res in all_inst:
# each reservation have a instance:
for instance in res.instances:
print "\t%s: \t%s" % (instance.id, instance.__dict__['tags'])
Вывод hoky tho:
us-west-1
EC2Connection:ec2.us-west-1.amazonaws.com
Showing all of your current instances
i-xxxxxxxx: {u'Name': u'Proxy-xx-1000-Enrollments'}
i-xxxxxxxx: {u'Name': u'Proxy-xx-1000-Enrollments'}
i-xxxxxxxx: {u'Name': u'Proxy-xx-1000-Enrollments'}
i-xxxxxxxx: {u'Name': u'Proxy-xx-1000-Enrollments'}
i-xxxxxxxx: {u'Name': u'Proxy-xx-1000-Enrollments'}
Когда я изменяю__dict__
метод "вытащить" только "имя", он работает (или, кажется, работает, но выдает ошибку:
Вот изменение кода:
print "\t%s: \t%s" % (instance.id, instance.__dict__['tags']['Name'])
Вотвывод:
us-west-1
EC2Connection:ec2.us-west-1.amazonaws.com
Showing all of your current instances
i-xxxxxxxx: Proxy-xx-1000-Enrollments
i-xxxxxxxx: Proxy-xx-1000-Enrollments
i-xxxxxxxx: Proxy-xx-1000-Enrollments
i-xxxxxxxx: Proxy-xx-1000-Enrollments
i-xxxxxxxx: Proxy-xx-1000-Enrollments
i-xxxxxxxx: Proxy-xx-1000-Enrollments
Traceback (most recent call last):
File "/Users/xxxxxx/xxx.xxx/boto/instanceid.py", line 43, in <module>
print "\t%s: \t%s" % (instance.id, instance.__dict__['tags']["Name"])
KeyError: 'Name'
Я предпочитаю этот вывод, БЕЗ ошибка - может кто-нибудь сказать мне, что я здесь делаю не так?
Спасибо