亚马逊网络服务的EC2实例是否有自我终止的方法? 亚马逊是否有任何功能允许一个实例在运行超过一小时后终止自己("Hara-Kiri")? 我可以更改正在运行实例上的脚本以进行自我终止,但这可能会失败,而我不想编辑镜像,因此我希望亚马逊来终止该实例。
亚马逊网络服务的EC2实例是否有自我终止的方法? 亚马逊是否有任何功能允许一个实例在运行超过一小时后终止自己("Hara-Kiri")? 我可以更改正在运行实例上的脚本以进行自我终止,但这可能会失败,而我不想编辑镜像,因此我希望亚马逊来终止该实例。
要使实例自行终止,请按以下两个步骤操作:
--instance-initiated-shutdown-behavior terminate
或 AWS 控制台/ API 调用上的等效选项启动实例。以 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
可用之前编写的,但你可以在评论中找到更新和其他有用的信息。你可以做到这件事
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/)
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
希望这可以帮到您!!!
$ 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'
$ 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
Broadcast message from root@ip-10-0-0-32
(unknown) at 16:30 ...
The system is going down for halt NOW!
PS:对于想要使用 自停止 功能的用户,需要注意并非所有的 EC2 类型在重启后都能自动恢复。我建议使用 EC2-VPC/EBS 与 开/关时间表。