例如:我有50个AWS实例。这些实例的标签中的密钥名称为AP1,AP2,AP3,AP4,AP5
现在,我想使用Python词典按标签名称对AWS实例进行分组。像这样:{AP1:[1,2,3 .... 10],AP2:[11,12 ..... 20],AP3:[21,22,.... 30],AP4:[ 31 ..... 40],AP5:[41,42,..... 50]}
根据本文的介绍:使用boto从AWS实例获取标签
我这样使用python脚本:
#!/usr/bin/env python
# -*- encoding: utf8 -*-
import boto.ec2
conn = boto.ec2.connect_to_region('us-west-1')
reservations = conn.get_all_instances()
InstanceMap={}
for reservation in reservations:
for instance in reservation.instances:
if 'Name' in instance.tags:
InstanceMap[instance.tags['Name']].append(instance.id)
当我运行此脚本时,它显示:[root @ Redhat script]#python group.py
追溯(最近一次通话):
在第11行的文件“ group.py”中
InstanceMap[instance.tags['Name']].append(instance.id)
KeyError:u'AP1'
我的脚本怎么了?请提供正确的python脚本。
当您尝试追加到InstanceMap[instance.tags['Name']]
列表时,您尝试追加到列表中,因为键(instance.tags['Name']
)InstanceMap
为空,所以该键尚不存在。
首先,您需要检查该密钥是否已存在InstanceMap
,如果存在,请使用append。否则,创建它。
#!/usr/bin/env python
# -*- encoding: utf8 -*-
import boto.ec2
conn = boto.ec2.connect_to_region('us-west-1')
reservations = conn.get_all_instances()
InstanceMap={}
for reservation in reservations:
for instance in reservation.instances:
if 'Name' in instance.tags:
tag_name = instance.tags['Name']
if tag_name in InstanceMap
InstanceMap[tag_name].append(instance.id)
else:
InstanceMap[tag_name] = [instance.id,]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句