Question

Comment puis-je supprimer toutes mes instances à partir de la ligne de commande? Existe-t-il une commande pour cela ou dois-je écrire un script?

Était-ce utile?

La solution

Autant que je sache, il n’existe pas de commutateur "all" pour la commande ec2-terminate-instances. Vous avez donc probablement besoin de le scripter. Ce ne sera pas si difficile. Il vous suffit de générer une liste de vos instances, séparées par des virgules.

C’est un script python que j’utilise:

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()

Il utilise la bibliothèque boto . Ce n'est pas nécessaire pour la tâche spécifique (un simple script shell suffira), mais cela peut s'avérer utile à de nombreuses reprises.

Enfin, connaissez-vous l'extension Elasticfox pour Firefox? C’est de loin le moyen le plus simple d’accéder à EC2.

Autres conseils

C'est une vieille question, mais je pensais partager une solution pour AWS CLI . :

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' ' ')

Informations connexes:

Si les pirates ont désactivé la terminaison accidentelle d'instance, exécutez d'abord cette commande:

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

Console AWS et Elasticfox facilite grandement les choses.

Une solution de ligne de commande peut être réalisée en une ligne à l'aide des outils de l'API EC2:

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

Par souci d’exhaustivité. Voici une autre façon, plus en phase avec le répertoire d'un programmeur, en utilisant des expressions régulières et le aws cli:

aws ec2 terminate-instances 
        --instance-ids 
         $(
          aws ec2 describe-instances 
            | grep InstanceId 
            | awk {'print $2'} 
            | sed 's/[",]//g'
          )
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top