web-dev-qa-db-ja.com

自己終了AWS EC2インスタンス?

Amazon Web Services EC2インスタンスが自己終了する方法はありますか? Amazonには、インスタンスが1時間以上実行された後、インスタンス自体を終了できるもの(「ハラキリ」)がありますか?実行中のインスタンスのスクリプトを変更してそれ自体を実行することもできますが、失敗する可能性があり、イメージを編集したくないので、Amazonにインスタンスを強制終了させて​​ください。

68
Steve3p0

インスタンスを自動的に終了させるには、次の両方の手順を実行します。

  1. AWSコンソールまたはAPI呼び出しで--instance-initiated-shutdown-behavior terminateまたは同等のものでインスタンスを開始します。
  2. shutdown -h nowをルートとして実行します。 Ubuntuでは、次を使用して55分でこれを実現できます。

    echo "Sudo halt" | at now + 55 minutes
    

この同じ「1時間で終了」という目標を達成するために、他のオプションに関する記事をしばらく書きました。

Amazon EC2上の一時インスタンスの自動終了
http://alestic.com/2010/09/ec2-instance-termination

この記事は元々instance-initiated-shutdown-behaviorが利用可能になる前に書かれたものですが、コメントには更新やその他の逸品があります。

86
Eric Hammond

あなたはこれを行うことができます

ec2-terminate-instances $(curl -s http://169.254.169.254/latest/meta-data/instance-id)

Ec2は現在のインスタンスIDを取得し、終了します。

15
Tommy

うまくいけば、これは動作します

instanceId=$(curl http://169.254.169.254/latest/meta-data/instance-id/)
region=$(curl http://169.254.169.254/latest/dynamic/instance-identity/document | grep region | awk '{print $3}' | sed  's/"//g'|sed 's/,//g')

/usr/bin/aws ec2 terminate-instances --instance-ids $instanceId --region $region

これがあなたを助けることを願っています!!!

8
Venu Gopal

ここに私のスクリプトはSelf-Terminating

$ EC2_INSTANCE_ID="`wget -q -O - http://instance-data/latest/meta-data/instance-id || die \"wget instance-id has failed: $?\"`"
$ echo "ec2-terminate-instances $EC2_INSTANCE_ID" | at now + 55 min || die 'cannot obtain instance-id'

Self-StoppingonSelf-として割り当てる場合終了、一度だけ実行できます。

EC2 ConsoleInstance Settingsに移動し、シャットダウン動作から停止
Configure/ etc/cloud/cloud.cfg、あなたはを使用してブートスクリプトを実行する方法を参照することができますcloud-init
Eric Hammond からの回答に従い、コマンドをファイルに入れて、 scripts-per-boot パス:

$ echo '#!/bin/sh' > per-boot.sh
$ echo 'echo "halt" | at now + 55 min' >> per-boot.sh
$ echo 'echo per-boot: `date` >> /tmp/per-boot.txt' >> per-boot.sh
$ chmod +x per-boot.sh
$ Sudo chown -R root per-boot.sh
$ Sudo mv -viu per-boot.sh /var/lib/cloud/scripts/per-boot

インスタンスを再起動 し、スクリプトが実行されているかどうかを確認します。

$ cat /tmp/per-boot.txt 
per-boot: Mon Jul 4 15:35:42 UTC 2016

その場合、インスタンスを停止するのを忘れた場合に備えて、55分間またはスクリプトで設定した時間にインスタンスが実行されると、インスタンス自体が停止として終了することを保証します。

Broadcast message from root@ip-10-0-0-32
        (unknown) at 16:30 ...

The system is going down for halt NOW!

PS:誰もがSelf-Stoppingを使用したいため、すべてのEC2タイプが再起動時に自己回復するとは限らないことに注意してください。 EC2-VPC/EBSOn/Off Schedule

4
Chetabahana