หากฉันแค่อยากได้รับอินสแตนซ์ EC2 ซึ่งมีค่า env ของแท็กคือ dev ฉันจะแก้ไขโค้ดตามสคริปต์นี้ได้อย่างไร

[สคริปต์นี้ให้ฉันได้รับอินสแตนซ์ทั้งหมด]

ฉันจะใช้พจนานุกรม Python การจัดกลุ่ม 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,]

ฉันได้รับ 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