Как получить ресурс для данной группы безопасности с помощью python boto?

Учитывая группу безопасности, я могу найти связанный экземпляр EC2, к которому присоединена группа безопасности, используя:

sgs   = conn.get_all_security_groups( filters = {'group-name':grouplist})

for sg in sgs:
    for instance in sg.instances():
        print sg.name,instance.id,i.ip_address

Как я могу получить ту же информацию, скажем, для RDS или ELB, к которым присоединена группа безопасности.

Обратите внимание, что группы безопасности являются общими VPC SG, которые видны в окне консоли EC2, но в моем случае также использовались в RDS и ELB.


person Murphy    schedule 11.01.2016    source источник
comment
boto 2.x ... но если то же самое возможно в boto3, это тоже мне поможет   -  person Murphy    schedule 12.01.2016


Ответы (1)


Приведенное ниже может быть не лучшим решением, но это сработает. Я привел примеры boto3.

Для ELB вы можете получить все балансировщики нагрузки в своей учетной записи, используя describe_load_balancers и без указания балансировщика нагрузки в аргументе для этого метода. Это также дает группы безопасности, связанные с каждым ELB. Вы можете зацикливаться на списке ELB. Создайте карту имени группы безопасности и списка ELB, например:

{ 'sg1' : [elb1, elb2], 
  'sg2' : [elb3, elb5]
}

Это можно сделать, перебрав группы безопасности в ELB.

то есть что-то вроде ниже (не идеальный рабочий код, но вы можете получить представление):

sgDict = {}
for elb in Elbs:
    Sgs = elb['SecurityGroups']
    for sg in Sgs:
        elbName = elb['LoadBalancerName']
        if sg in sgDict:
            elbList = sgDict[sg];
            elbList.append(elbName);
            sgDict[sg] = elbList;
        else:
            sgDict[sg] = [elbName]

        

Для RDS вы можете сделать то же самое с describe_db_instances

person phoenix    schedule 12.01.2016
comment
Спасибо, отлично, это, кажется, единственное решение на данный момент в boto. Я заставил это работать, спасибо за концепцию - person Murphy; 12.01.2016