コマンドラインからすべてのEC2インスタンスを強制終了するにはどうすればよいですか?
-
10-07-2019 - |
質問
コマンドラインからすべてのインスタンスを強制終了するにはどうすればよいですか?このためのコマンドはありますか、それともスクリプトを作成する必要がありますか?
解決
私が知る限り、ec2-terminate-instancesコマンドの「すべて」スイッチはありません。したがって、おそらくスクリプトを作成する必要があります。そんなに難しくないでしょう。インスタンスのコンマ区切りリストを生成するだけです。
これは私が使用している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にアクセスする最も簡単な方法です。
他のヒント
これは古い質問ですが、 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
AWS Console および Elasticfox で簡単に作成できます。
コマンドラインソリューションは、EC2 APIツールを使用して1行で実現できます。
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'
)
所属していません StackOverflow