2016-01-11 1 views
1

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

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 

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

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

+1

Boto 2.x или boto3? – helloV

+0

boto 2.x ... но если то же самое возможно в boto3, это также поможет мне – Murphy

ответ

1

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

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

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

Это может быть сделано с помощью цикла через группы безопасности в качестве УДР.

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

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

+0

Спасибо, отлично, это единственное решение на данный момент в boto. Я сделал это, спасибо за концепцию – Murphy

Смежные вопросы