Domanda

Come posso uccidere tutte le mie istanze dalla riga di comando? Esiste un comando per questo o devo scriverlo?

È stato utile?

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'
          )
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top