如何使用Python字典按标记名对AWS实例进行分组?

2024-10-02 20:36:41 发布

您现在位置:Python中文网/ 问答频道 /正文

例如: 我有50个AWS实例。 这些实例的key-in标记的名称是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]}

根据本文: Obtaining tags from AWS instances with boto

我使用这个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)

当我运行这个脚本时,它显示: [根@红帽脚本]#python组.py在

回溯(最近一次呼叫):

“文件”组.py“,第11行,英寸

^{pr2}$

键错误:u'AP1'

我的剧本怎么了? 请提供一个正确的python脚本。在


Tags: instances实例instancein标记脚本awstags
1条回答
网友
1楼 · 发布于 2024-10-02 20:36:41

当您试图追加到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,]

相关问题 更多 >