【问题标题】:How to get the resource for a given security group using python boto?如何使用 python boto 获取给定安全组的资源?
【发布时间】:2016-01-12 19:48:19
【问题描述】:

给定一个安全组,我可以使用以下方法找到安全组附加到的关联 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,但在我的情况下,它也用于 RDS 和 ELB

【问题讨论】:

  • boto 2.x...但如果在 boto3 中也能做到这一点,那对我也有帮助

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


【解决方案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 做类似的事情

【讨论】:

  • 谢谢,太好了,这似乎是目前 boto 中唯一的解决方案。我成功了,谢谢你的概念
猜你喜欢
  • 1970-01-01
  • 2017-08-14
  • 2014-05-27
  • 1970-01-01
  • 2013-05-23
  • 1970-01-01
  • 1970-01-01
  • 2015-06-28
  • 1970-01-01
相关资源
最近更新 更多