如果我只想获得标签的env值为“dev”的EC2实例,我该如何根据这个脚本修改代码?

问题描述 投票:0回答:1

[这个脚本让我得到所有实例]

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']}

我应该如何根据此脚本修改代码?

python amazon-web-services amazon-ec2
1个回答
1
投票

你想要考虑以-dev结尾的标签。

改变这一行:

if 'Name' in instance.tags:

至:

if 'Name' in instance.tags and instance.tags['Name'].endswith('-dev'):

你也可以将它作为一种方法,并传递你的“环境”,如devprodstage,而不是每次修改代码。

© www.soinside.com 2019 - 2024. All rights reserved.