[这个脚本让我得到所有实例]
How Can I use Python dictionary Grouping AWS instances by tag's name?
当我在此链接中运行脚本时:
#!/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,]
我得到所有EC2 Instances ID和Instances标签的名称。
结果是
{'ap1-dev': ['i-04ebd1403d93bef01'],
'ap1-prod': ['i-08f0c8a3f495bad71', 'i-0508a3800cd0ec331'],
'ap1-stage': ['i-0716b2fd4089c7471', 'i-025002d2da8396171'],
'ap2-dev': ['i-08ffb39676b7b1c81'],
'ap2-prod': ['i-019dbf70c2f061521', 'i-0d2d482cb85419131'],
'ap2-stage': ['i-04d71424b7257b4b1', 'i-02c0046baae635d31']}
实例标签名称的值为ap1-dev,其标签的env值为dev
instacne标签名称的值是ap1-prod,其标签的env的值是prod
现在我的问题是:
如果我只想获得标签的env值为“dev”的EC2实例。我想得到的结果是:
{'ap1-dev': ['i-04ebd1403d93bef01'],
'ap2-dev': ['i-08ffb39676b7b1c81']}
我应该如何根据此脚本修改代码?
你想要考虑以-dev
结尾的标签。
改变这一行:
if 'Name' in instance.tags:
至:
if 'Name' in instance.tags and instance.tags['Name'].endswith('-dev'):
你也可以将它作为一种方法,并传递你的“环境”,如dev
,prod
,stage
,而不是每次修改代码。