我目前正在自动构建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()
但是,如果这确实是正确的方法,我不清楚需要传递什么作为参数。
非常感谢
ħ
答案 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