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

How to get the resource for a given security group using 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 的相同信息。

请注意,安全组是在 EC2 控制台中看到的通用 VPC SG window,但在我的情况下,也已在 RDS 和 ELB 上使用

以下可能不是最佳解决方案,但可以。我已经给出了 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

做类似的事情