【问题标题】:Python Boto AWS Remove VPC Security Group RulesPython Boto AWS 删除 VPC 安全组规则
【发布时间】:2015-04-14 12:41:05
【问题描述】:

我目前正在自动构建 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()

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

非常感谢

H

【问题讨论】:

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


【解决方案1】:

最后我想通了:

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)

【讨论】:

  • 这真的有效吗?我发现这种方法不会删除所有项目。我最好能复制清单。即对于列表中的规则(vpc_security_group.rules):对于列表中的授权(规则.grants):-但这仍然没有捕获所有的授权......
  • 它为我删除了 VPC 安全组的初始规则。如果随后添加其他规则,我还没有测试是否会删除所有规则。目前我只能说。
  • 经过仔细检查,我意识到您的代码没有问题。我正在使用 vpc_security_gropu.revoke - 它有一个错误。它尝试更新 security_group 内的本地规则列表。不知何故,当循环授予时,这会让人感到困惑。
  • 谢谢这对我有用,遗憾的是 boto 文档(虽然很棒)缺少一些关键部分和示例..
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2023-03-20
    • 2015-04-28
    • 2017-08-10
    • 2015-07-27
    • 2020-03-30
    • 2014-09-08
    • 1970-01-01
    • 2018-08-25
    • 1970-01-01
    相关资源
    最近更新 更多