Come posso uccidere tutte le mie istanze EC2 dalla riga di comando?
-
10-07-2019 - |
Domanda
Come posso uccidere tutte le mie istanze dalla riga di comando? Esiste un comando per questo o devo scriverlo?
Soluzione
Per quanto ne so non esiste un'opzione 'all' per il comando ec2-terminate-instance. Quindi probabilmente dovrai scriverlo. Non sarà così difficile. Devi solo generare un elenco separato da virgole delle tue istanze.
Questo è uno script Python che sto usando:
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()
Utilizza la libreria boto . Questo non è necessario per l'attività specifica (sarà sufficiente un semplice script di shell), ma può essere utile in molte occasioni.
Finalmente sei a conoscenza dell'estensione Elasticfox per Firefox? Questo è di gran lunga il modo più semplice per accedere a EC2.
Altri suggerimenti
Questa è una vecchia domanda ma ho pensato di condividere una soluzione per CLI AWS :
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' ' ')
Informazioni correlate:
Se gli hacker hanno disabilitato la chiusura accidentale dell'istanza, eseguire prima questo comando:
aws ec2 describe-instances --filters "Name=instance-state-name,Values=pending,running,stopped,stopping" --query "Reservations[].Instances[].[InstanceId]" --output text | xargs --delimiter '\n' --max-args=1 aws ec2 modify-instance-attribute --no-disable-api-termination --instance-id
AWS Console e Elasticfox lo rendono piuttosto semplice.
È possibile ottenere una soluzione da riga di comando in una riga utilizzando gli strumenti dell'API EC2:
for i in `ec2din | grep running | cut -f2`; do ec2kill $i; done
Per completezza. Ecco un altro modo, essere più in linea con il repertorio di un programmatore, usando espressioni regolari e aws cli:
aws ec2 terminate-instances
--instance-ids
$(
aws ec2 describe-instances
| grep InstanceId
| awk {'print $2'}
| sed 's/[",]//g'
)