2009-03-12 8 views

Antwort

2

Soweit ich weiß, gibt es für den Befehl ec2-terminate-instances keinen 'all' Schalter. Sie müssen es wahrscheinlich skripten. Es wird nicht so schwer sein. Sie müssen nur eine durch Kommas getrennte Liste Ihrer Instanzen erstellen.

Dies ist ein Python-Skript, die ich benutze:

import sys 
import time 
from boto.ec2.connection import EC2Connection 

def main(): 
    conn = EC2Connection('', '') 
    instances = conn.get_all_instances() 
    print instances 
    for reserv in instances: 
     for inst in reserv.instances: 
      if inst.state == u'running': 
       print "Terminating instance %s" % inst 
       inst.stop() 

if __name__ == "__main__": 
    main() 

Es verwendet boto Bibliothek. Dies ist für die spezifische Aufgabe nicht notwendig (ein einfaches Shell-Skript wird ausreichen), aber es kann bei vielen Gelegenheiten nützlich sein.

Endlich kennen Sie Elasticfox Erweiterung für Firefox? Dies ist bei weitem der einfachste Weg, um auf EC2 zuzugreifen.

+0

Ich glaube, jetzt können Sie connection.terminate_instances() verwenden, – rcell

5

AWS Console und Elasticfox machen es ziemlich einfach.

Eine Kommandozeilen-Lösung kann Werkzeuge in einzeiliger mit den EC2-API erreicht werden:

for i in `ec2din | grep running | cut -f2`; do ec2kill $i; done 
4

Dies ist eine alte Frage, aber dachte, ich würde eine Lösung für AWS CLI teilen:

$ aws ec2 terminate-instances --instance-ids $(aws ec2 describe-instances --filters "Name=instance-state-name,Values=pending,running,stopped,stopping" --query "Reservations[].Instances[].[InstanceId]" --output text | tr '\n' ' ') 
0

Der Vollständigkeit halber. Hier ist eine andere Art und Weise, mehr im Einklang mit dem Repertoire eines Programmierers zu sein, von regulären Ausdrücken und die aws cli:

aws ec2 terminate-instances 
     --instance-ids 
     $(
      aws ec2 describe-instances 
      | grep InstanceId 
      | awk {'print $2'} 
      | sed 's/[",]//g' 
     )