2013-12-08 9 views
6

私は過去数週間にわたって新しいEC2スポットリクエストを作成しました。すべての要求に対して新しいセキュリティグループが作成されました。スポット要求が削除されると、セキュリティグループは削除されませんでした。私は100のグループ制限を打ち、それらを削除したい。明らかにEC2インターフェイスは一度に1つの削除のみを許可します。つまり、これらのグループを削除するには300回クリックする必要があります。または、クリック数やコード行数が少ない複数のセキュリティグループを削除するより良い方法はありますか?Amazon EC2のすべてのセキュリティグループを削除するには?

答えて

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]) 

シェルでコマンドを実行する必要があります。

+1

はあなたのソリューションを試してみましたが、現在のインスタンスが古いセキュリティグループにアクセスすることはできません、2つだけがリスト表示され、1があることデフォルトのものが使用されます。セキュリティグループが使用されたインスタンスが数日前に終了したため、この方法ではできません。現在のインスタンスはすべて1つの新しいセキュリティグループで実行されます(私は間違いから学んだことがあります)。だから、明らかに私はクリックフリーク300回する必要があります。複数のセキュリティグループを選択すると、ec2 UIは削除ボタンを無効にします。とにかくありがとう。 – Casady

+0

@Casady "セキュリティグループが使用されたインスタンスが数日前に終了したため、この方法ではできません。"私はあなたのクラウドに実際にはいないが、これが何を意味するのか理解できません。私が間違っているなら私を訂正してください。しかし、 'get_all_security_groups'はすべてのセキュリティグループを取得すると思いました。 :) @slayedbyluciferの答えも試してください。 –

+0

私もそう思った!しかし、私はインスタンスの1つにログインして、python scryptを実行し、2つしか表示しません。インスタンス用に作成されたものとデフォルトのもの。 – Casady

4

これには基本的なスクリプトとAWS SDKが必要です。 AWSが提供するSDKのほとんどすべてでこれを行うことができます。

AWS-CLIはすでにインストールされて設定されています。これは私がどうなるのかです:describe-security-groups

  • を持つすべてのSGはjq(BASHのためのJSONパーサー)をインストール

    1. リスト
    2. あなたいったん
    3. jq構文についてthisを確認してください)SG IDを引いてSG IDを持っていれば、forループでdelete-security-groupを実行してください。

    これは、あなたがやりたいと思っていることはかなり簡単で簡単な方法です。これは、AWS SDKのいずれかで行うことができます。

    1. あなたはaws-cliをインストールし、
    2. を設定しているシステムにインストールされjqを持っている:

      これらは、bashスクリプトの中に構築することができるコマンドだけのカップル、提供されています。

    すでに他のAWS SDKがインストールされている場合は、java/python/ruby​​ ...などの方が、JSON/HASH/DataStructureを解析する独自の組み込み方法があります。

    これが役に立ちます。

  • 0

    これらのソリューションは、問題のセキュリティグループを参照する他のセキュリティグループにルールがない場合にのみ機能します。私は、他のセキュリティグループの入力規則を含め、単一のセキュリティグループを削除するスクリプトをいくつか持っています。また、AWS ELBデフォルトセキュリティグループを参照する入力ルールの特殊なケースも扱います。このような複雑な状況が発生した場合、上記の解決策はこれらの他のルールのためにセキュリティグループを削除しません。私のスクリプトは、ここで(EC2-クラシックとVPCベースのセキュリティグループに1つに1つ)です:https://gist.github.com/arpcefxl/2acd7d873b95dbebcd42

    0
    private static void delete(List<String> sgs) { 
        AmazonEC2Client ec2 = new AmazonEC2Client(Credentials.getCredentialsProvider()); 
        ec2.setEndpoint("ec2.us-west-2.amazonaws.com"); // default 
    
        for(String sg:sgs) { 
         System.out.println("DELETING SECURITY GROUP " + sg); 
         DeleteSecurityGroupRequest delReq = new DeleteSecurityGroupRequest().withGroupName(sg); 
         try { 
          ec2.deleteSecurityGroup(delReq); 
         } catch (Exception e) { 
          // e.printStackTrace(); 
         } 
        } 
    } 
    
    関連する問題