2013-12-08 6 views
6

मैंने पिछले सप्ताह में नए ईसी 2 स्पॉट अनुरोध बनाए हैं। प्रत्येक अनुरोध के लिए एक नया सुरक्षा समूह बनाया गया था। जब स्पॉट अनुरोध हटा दिए गए थे तो सुरक्षा समूह हटा दिए गए थे। मैंने 100 समूहों की सीमा को मारा है और उन्हें हटाना चाहते हैं। ईसी 2 इंटरफ़ेस स्पष्ट रूप से एक समय में केवल एक विलोपन की अनुमति देता है, जिसका अर्थ है कि मुझे इन समूहों को हटाने के लिए 300 क्लिक करना होगा। या कोड के कुछ क्लिक या लाइनों के साथ कई सुरक्षा समूहों को हटाने का एक बेहतर तरीका है?अमेज़ॅन ec2 पर सभी सुरक्षा समूहों को कैसे हटाएं?

उत्तर

1

मुझे लगता है कि आप ऐसा आदेश जोड़कर ऐसा कर सकते हैं जो सभी सुरक्षा समूहों और एक दूसरे को सूचीबद्ध करता है जो उन्हें हटा देता है।

आप अजगर boto एपीआई (उदाहरण के लिए) है कि हो सकता है उपयोग कर रहे हैं:

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

अपने समाधान की कोशिश की है, लेकिन मौजूदा उदाहरणों बड़े सुरक्षा समूहों उपयोग नहीं कर सकते, केवल दो सूचीबद्ध हैं, एक होने के इस्तेमाल किया और डिफ़ॉल्ट एक। मैं इसे इस तरह से नहीं कर सकता क्योंकि जिन मामलों में सुरक्षा समूहों का इस्तेमाल किया गया था, वे दिन पहले समाप्त कर दिए गए थे। वर्तमान उदाहरण केवल 1 नए सुरक्षा समूह (मैंने अपनी गलतियों से सीखा है) पर चलाया है। तो जाहिर है मुझे 300 बार फ्रेकिंग पर क्लिक करना होगा। यदि मैं एक से अधिक सुरक्षा समूह का चयन करता हूं तो ec2 UI हटाएं बटन अक्षम करता है। फिर भी धन्यवाद। – Casady

+0

@Casady "मैं इसे इस तरह से नहीं कर सकता क्योंकि जिन मामलों में सुरक्षा समूहों का उपयोग किया गया था, वे दिन पहले समाप्त कर दिए गए थे" मैं वास्तव में आपके क्लाउड में नहीं हूं लेकिन मुझे समझ में नहीं आता कि इसका क्या अर्थ है। अगर मैं गलत हूं तो मुझे सही करें, लेकिन मैंने सोचा कि 'get_all_security_groups' को सभी सुरक्षा समूह मिलते हैं। :) आपको @slayedbylucifer का जवाब भी आजमा देना चाहिए। –

+0

मैंने भी सोचा! लेकिन मैंने एक उदाहरण में लॉग इन किया है, पाइथन स्क्रीप्ट चलाएं और यह केवल दो प्रदर्शित करता है। उदाहरण के लिए बनाया गया, और डिफ़ॉल्ट एक। – Casady

4

इसे कुछ बुनियादी स्क्रिप्टिंग और एडब्ल्यूएस एसडीके की आवश्यकता होगी। आप इसे एडब्ल्यूएस द्वारा प्रदान किए गए सभी एसडीके के साथ बहुत कुछ कर सकते हैं।

मैं AWS-CLI पसंद करूंगा क्योंकि मैंने पहले से ही इसे स्थापित और कॉन्फ़िगर किया है।

  1. सूची सभी describe-security-groups
  2. साथ एसजीएस jq स्थापित करें (मार के लिए JSON पार्सर)
  3. खींचो एसजी आईडी (jq वाक्य रचना के लिए जाँच this)
  4. एक बार जब आप: यह मैं क्या करना होगा है एसजी आईडी है, delete-security-group चलाएं for लूप usig द्वारा।

यह वाट कर आप क्या करना चाहते का आगे का रास्ता काफी सरल और सीधे है। यह किसी भी एडब्ल्यूएस एसडीके द्वारा किया जा सकता है। आप aws-cli स्थापित और कॉन्फ़िगर

  • आप jq अपने सिस्टम पर स्थापित किया है

    1. :

      ये सिर्फ आदेशों की एक जोड़ी है, जो उपलब्ध कराए गए एक बैश स्क्रिप्ट में निर्माण किया जा सकता है।

    आप पहले से ही कुछ अन्य एडब्ल्यूएस एसडीके स्थापित किया है, तो आप उस जावा/अजगर/रूबी के रूप में के साथ बेहतर कर रहे हैं ... आदि सभी JSON/HASH/आंकड़ा संरचना पार्स करने के लिए अपने स्वयं के इनबिल्ट रास्ता नहीं है।

    उम्मीद है कि इससे मदद मिलती है।

  • 0

    ये समाधान केवल तभी काम करते हैं यदि आपके पास अन्य सुरक्षा समूह में नियम नहीं हैं जो सुरक्षा समूहों का संदर्भ देते हैं। मेरे पास कुछ स्क्रिप्ट हैं जो एक सुरक्षा समूह को हटाएंगी, जिसमें अन्य सुरक्षा समूहों में प्रवेश नियम शामिल हैं।मैं एडब्ल्यूएस ईएलबी डिफ़ॉल्ट सुरक्षा समूह का संदर्भ देने वाले प्रवेश नियमों के विशेष मामले को भी संभालता हूं। यदि आपके पास यह अधिक जटिल स्थिति है, तो ऊपर दिए गए समाधान इन अन्य नियमों के कारण आपके सुरक्षा समूह को नहीं हटाएंगे। मेरे स्क्रिप्ट यहाँ हैं (EC2-क्लासिक के लिए और एक VPC आधारित सुरक्षा समूह के लिए): 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(); 
         } 
        } 
    } 
    
    संबंधित मुद्दे