Python Boto AWS删除VPC安全组规则

时间:2014-07-07 14:11:32

标签: amazon-web-services boto amazon-vpc

我目前正在自动构建AWS VPC,但希望删除添加到使用VPC创建的安全组的默认规则。我可以像这样查看安全组规则:

for security_group in vpc_connection.get_all_security_groups(): for rule in vpc_security_group.rules: print dir(rule)

如果有人能告诉我或给我一个如何从VPC中删除默认规则的示例,我将不胜感激。

从API文档中我可以看到有一些方法,例如:

boto.ec2.connection.revoke_security_group()

但是,如果这确实是正确的方法,我不清楚需要传递什么作为参数。

非常感谢

ħ

2 个答案:

答案 0 :(得分:5)

我最终想到了这一点:

for rule in vpc_security_group.rules:
    for grant in rule.grants:
        ec2_connection.revoke_security_group(group_id=vpc_security_group.id, ip_protocol=rule.ip_protocol, from_port=rule.from_port, to_port=rule.to_port, src_security_group_group_id=grant.group_id, cidr_ip=grant.cidr_ip)

for rule in vpc_security_group.rules_egress:
    for grant in rule.grants:
        ec2_connection.revoke_security_group_egress(vpc_security_group.id, rule.ip_protocol, rule.from_port, rule.to_port, grant.group_id, grant.cidr_ip)

答案 1 :(得分:0)

我使用上面的一些逻辑来制作一些python脚本,这些脚本将删除一个安全组,无论它是ec2-classic还是VPC(仅假设入口规则)。有一些特殊情况,例如要删除的SG在另一个SG的入口规则中引用。另一个特例是在EC2-classic中引用AWS默认的ELB SG。两者都得到优雅处理,脚本可以在这里找到:https://gist.github.com/arpcefxl/2acd7d873b95dbebcd42