Как я могу убить все мои экземпляры из командной строки? Есть ли команда для этого или я должен ее сценарий?Как я могу убить все экземпляры EC2 из командной строки?
ответ
Насколько я знаю, для команды ec2-terminate-examples не существует переключателя 'all'. Так что вам, вероятно, нужно будет его скриптировать. Это будет не так сложно. Вам нужно только создать список экземпляров, разделенных запятыми.
Это питон скрипт я использую:
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 Console и Elasticfox сделать это довольно легко.
командной строки, решение может быть достигнуто в одной строке с помощью EC2 API инструменты:
for i in `ec2din | grep running | cut -f2`; do ec2kill $i; done
Это старый вопрос, но думал, что я разделю решение для 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' ' ')
Для полноты картины. Вот еще один способ, будучи более в соответствии с репертуаром программиста, с помощью регулярных выражений и АМС кли:
aws ec2 terminate-instances
--instance-ids
$(
aws ec2 describe-instances
| grep InstanceId
| awk {'print $2'}
| sed 's/[",]//g'
)
Я считаю, что теперь вы можете использовать connection.terminate_instances() – rcell