如何使用python boto获取给定安全组的资源?

时间:2016-01-11 21:50:50

标签: python amazon-web-services boto aws-sdk boto3

鉴于安全组,我能够找到使用安全组附加的关联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的

1 个答案:

答案 0 :(得分: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

执行类似的操作