Как я могу убить все мои экземпляры EC2 из командной строки?

StackOverflow https://stackoverflow.com/questions/638352

  •  10-07-2019
  •  | 
  •  

Вопрос

Как я могу убить все мои экземпляры из командной строки? Есть команда для этого или я должен написать это?

Это было полезно?

Решение

Насколько я знаю, для команды ec2-terminate-instances нет переключателя 'all'. Так что вам, вероятно, нужно написать сценарий. Это не будет так сложно. Вам нужно только создать список ваших экземпляров через запятую.

Это скрипт Python, который я использую:

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

Он использует библиотеку boto . Это не обязательно для конкретной задачи (достаточно простого сценария оболочки), но во многих случаях это может быть удобно.

Наконец, вы знаете о расширении Elasticfox для Firefox? Это самый простой способ получить доступ к EC2.

Другие советы

Это старый вопрос, но я решил поделиться решением для интерфейса командной строки 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' ' ')
<Ч>

Дополнительная информация:

Если хакеры отключили случайное завершение экземпляра, сначала запустите эту команду:

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 и Elasticfox сделать это довольно легко.

Решение командной строки может быть достигнуто в одну строку с использованием инструментов API EC2:

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

Ради полноты. Вот еще один способ - больше соответствовать репертуару программиста, используя регулярные выражения и aws cli:

aws ec2 terminate-instances 
        --instance-ids 
         $(
          aws ec2 describe-instances 
            | grep InstanceId 
            | awk {'print $2'} 
            | sed 's/[",]//g'
          )
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top