Wie kann ich alle meine Instanzen von der Befehlszeile aus töten? Gibt es dafür einen Befehl oder muss ich ihn skripten?Wie kann ich alle meine EC2-Instanzen von der Kommandozeile aus töten?
Antwort
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.
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
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' ' ')
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'
)
Ich glaube, jetzt können Sie connection.terminate_instances() verwenden, – rcell