如何从命令行中删除所有EC2实例?

fly*_*ire 7 amazon-ec2 amazon-web-services

如何从命令行中杀死所有实例?是否有命令,或者我必须编写脚本吗?

Bel*_*dez 8

这是一个老问题,但我认为我将共享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' ' ')
Run Code Online (Sandbox Code Playgroud)

相关信息:

如果黑客已禁用意外实例终止,请首先运行此命令:

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
Run Code Online (Sandbox Code Playgroud)


Ada*_*amK 5

AWS ConsoleElasticfox让它变得非常简单.

可以使用EC2 API工具在一行中实现命令行解决方案:

for i in `ec2din | grep running | cut -f2`; do ec2kill $i; done
Run Code Online (Sandbox Code Playgroud)


kgi*_*kis 4

据我所知,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()
Run Code Online (Sandbox Code Playgroud)

它使用boto库。这对于特定任务来说并不是必需的(一个简单的 shell 脚本就足够了),但它在许多场合可能很方便。

最后您知道 Firefox 的 Elasticfox 扩展了吗?这是迄今为止访问 EC2 最简单的方法。