我希望EC2实例在24小时后自动终止。

我使用实例启动时执行的脚本执行此操作:

shutdown | at now + 24 hours

实例关闭,当实例终止时ebs卷终止,这样就可以了。

在控制台中,实例在一段时间内被指示为不可访问,直到它被声明为已终止。我想知道这样关闭一个实例是不是不好,用aws cli终止它是否更好。

这个 docs 说:

使用terminate instances命令终止ec2实例时,将在操作系统级别注册以下内容:

API请求将向来宾发送一个按钮按下事件。

按钮按下事件将停止各种系统服务。systemd处理系统的正常关闭。平滑关闭 由ACPI关闭按钮按下事件触发 管理程序。

将启动ACPI关闭。

当优雅关闭过程退出时,该实例将关闭。没有 可配置操作系统关闭时间。

该实例位于运行rest web服务的自动伸缩组中,因此很可能有一些请求刚刚被执行。

仍在执行的请求会发生什么情况?(rest服务的超时时间为30秒,因此请求的运行时间不会超过30秒。)

终止协议 shutdown 不如使用aws cli或由auto scaling group终止?

最佳回复

使用分离实例API在关机前1-2分钟从自动缩放组中删除实例。detach instances api还将从负载平衡器中移除该实例(如果已连接),请参见 https://docs.aws.amazon.com/en_pv/autoscaling/ec2/userguide/detach-instance-asg.html 更多信息。

示例:

AWS自动调整分离实例--实例ID I-05B4F7D5BE44822A6\ --自动缩放组名称my asg—应减少所需容量

如果不从负载平衡器中删除该实例,则该实例上运行的任何飞行中请求都将得到错误,因为当侦听进程终止时,该实例的操作系统关闭TCP连接时,负载平衡器将看到连接关闭事件。

所以是的,通过关闭终止比从ASG中分离要不那么有序。