Если бы я просто хотел получить экземпляры EC2, у которых значение тега env равно dev , как мне изменить код на основе этого скрипта?

[Этот скрипт позволяет мне получить все экземпляры]

Как я могу использовать словарь Python Grouping AWS экземпляры по имени тега?

Когда я запускаю скрипт по этой ссылке:

#!/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 и имя тега экземпляров.

Результат

{'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.

Теперь мой вопрос:

Если бы я просто хотел получить экземпляры EC2, чье значение тега env равно «dev». Результат, который я хочу получить, таков:

{'ap1-dev': ['i-04ebd1403d93bef01'],

 'ap2-dev': ['i-08ffb39676b7b1c81']}

Как мне изменить код на основе этого скрипта?


person Andrew    schedule 02.01.2018    source источник


Ответы (1)


Вы хотите рассмотреть теги, которые заканчиваются на -dev.

Измените эту строку:

if 'Name' in instance.tags:

to:

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

Вы также можете сделать это как метод и передать свою «среду», например dev, prod, stage, вместо того, чтобы каждый раз изменять код.

person helloV    schedule 02.01.2018
comment
Спасибо большое ! Я использую эту строку: если «Имя» в instance.tags и «env» в instance.tags и instance.tags['env'] == «stage» выполнено успешно. - person Andrew; 02.01.2018