8

コマンドラインからすべてのインスタンスを強制終了するにはどうすればよいですか?このためのコマンドはありますか、それともスクリプトを作成する必要がありますか?

4

5 に答える 5

11

これは古い質問ですが、 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 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
于 2016-08-06T00:10:48.767 に答える
5

AWS コンソールElasticfoxを使用すると、非常に簡単になります。

コマンドライン ソリューションは、EC2 API ツールを使用して 1 行で実現できます。

for i in `ec2din | grep running | cut -f2`; do ec2kill $i; done
于 2009-03-12T22:36:11.803 に答える
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()

botoライブラリを使用します。これは特定のタスクには必要ありませんが (単純なシェル スクリプトで十分です)、多くの場合に便利です。

最後に、Firefox 用の Elasticfox 拡張機能をご存知ですか? これは、EC2 にアクセスする最も簡単な方法です。

于 2009-03-12T12:29:16.047 に答える
1

完全を期すために。正規表現と aws cli を使用して、プログラマーのレパートリーとより一致させる別の方法を次に示します。

aws ec2 terminate-instances 
        --instance-ids 
         $(
          aws ec2 describe-instances 
            | grep InstanceId 
            | awk {'print $2'} 
            | sed 's/[",]//g'
          )
于 2017-09-10T14:53:14.750 に答える