Как я могу убить все мои экземпляры EC2 из командной строки?
-
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'
)