自终止的AWS EC2实例?
Amazon Web Services EC2实例是否可以自行终止? 亚马逊是否有任何事情可以允许一个实例在运行超过一个小时后自行终止(“Hara-Kiri”)? 我可以改变正在运行的实例上的脚本来做到这一点,但这可能会失败,我不想编辑图像,所以我想亚马逊杀死实例。
要让一个实例自行终止,请执行以下两个步骤:
- 使用
--instance-initiated-shutdown-behavior terminate
或AWS控制台或API调用中的等效--instance-initiated-shutdown-behavior terminate
实例。 -
以root身份运行
shutdown -h now
。 在Ubuntu上,您可以使用以下命令在55分钟内完成设置:echo "sudo halt" | at now + 55 minutes
我写了一篇文章,回到其他选项来完成相同的“一小时内终止”的目标:
在Amazon EC2上自动终止临时实例
http://alestic.com/2010/09/ec2-instance-termination
这篇文章最初是在instance-initiated-shutdown-behavior
可用之前编写的,但您可以在注释中find更新和其他gem。
你可以这样做
ec2-terminate-instances $(curl -s http://169.254.169.254/latest/meta-data/instance-id)
ec2将获得它的当前实例id并终止它自己。
希望这会起作用
instanceId = $(curl http://169.254.169.254/latest/meta-data/instance-id/) /usr/bin/aws ec2 terminate-instances --instance-ids $instanceId --region us-east-1
希望这可以帮助你!
这是我自我终止的脚本
$ 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'
如果您想将其指定为“ 自停止自我停止 ”,则只能执行一次。
在EC2控制台中,转到“ 实例设置” ,将“ 关机行为 ”更改为“ 停止” 。
configuration/etc/cloud/cloud.cfg ,可以参考如何使用cloud-init运行启动脚本 。
按照Eric Hammond的回答,将该命令放在一个文件中,并在脚本每引导path中find它:
$ 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:对于每个人都想使用自动停止 ,有一点你应该注意,并非所有的EC2types都是在重新启动时自我恢复的。 我build议使用EC2-VPC / EBS 开/关时间表 。