如何删除Amazon ec2上的所有安全组?

时间:2013-12-08 02:51:47

标签: amazon-ec2

我在过去几周内创建了新的EC2现场请求。为每个请求创建了一个新的安全组。删除现场请求后,安全组不会被删除。我已达到100组限制并想删除它们。 EC2界面显然一次只允许删除一次,这意味着我必须进行300次点击才能删除这些组。或者是否有更好的方法来删除多个安全组,只需点击几下或代码行?

4 个答案:

答案 0 :(得分:4)

这需要一些基本的脚本和AWS SDK。您可以使用AWS提供的几乎所有SDK来完成此任务。

我更喜欢AWS-CLI,因为我已经安装并配置了它。这就是我要做的事情:

  1. 列出describe-security-groups
  2. 的所有SG
  3. 安装jq(BASH的Json解析器)
  4. 拉出SG ID(检查this jq语法)
  5. 获得SG ID后,请使用for循环运行delete-security-group
  6. 这是做你想要做的wat的相当简单和直接的方式。这可以通过任何AWS开发工具包完成。

    这些只是一些可以构造成Bash脚本的命令,提供:

    1. 您已安装并配置了aws-cli
    2. 您的系统已安装jq
    3. 如果您已经安装了其他一些AWS SDK,那么最好使用它,因为java / python / ruby​​ ...等都有自己内置的解析JSON / HASH / DataStructure的方式。

      希望这有帮助。

答案 1 :(得分:1)

我认为您可以通过组合列出所有安全组的命令和另一个删除它们的命令来实现此目的。

如果您使用的是python boto API(例如):

import boto
conn = boto.connect_ec2(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
groups = conn.get_all_security_groups() 

返回(例如):[SecurityGroup:appserver, SecurityGroup:default, SecurityGroup:vnc, SecurityGroup:webserver]

然后你将它们全部删除:

for group in groups:
    conn.delete_security_group(group.split(":")[1])

修改

您应该在shell上运行命令。

答案 2 :(得分:0)

只有在其他安全组中没有引用相关安全组的规则时,这些解决方案才有效。我有几个脚本会删除单个安全组,包括其他安全组中的入口规则。我还处理了引用AWS ELB默认安全组的入口规则的特殊情况。如果您遇到这种更复杂的情况,由于这些其他规则,上述解决方案不会删除您的安全组。我的脚本在这里(一个用于ec2-classic,一个用于基于VPC的安全组):https://gist.github.com/arpcefxl/2acd7d873b95dbebcd42

答案 3 :(得分:0)

b