您可以对某个实例执行的大多数操作都是同步的 - 例如,如果您发送stop request,它将立即运行,程序将阻止直到它完成。
但是,RebootInstanceRequest只是安排稍后重启。
是否有办法访问实例的计划以了解计划重新启动,或以其他方式等待重启完成?
答案 0 :(得分:3)
如果您发送停止请求,它将立即运行,程序将阻止直到它完成
不正确。当您发出ec2:StopInstance
请求时,实例会从running
移至stopping
状态。但是你的程序没有阻止。请求立即返回更新的实例状态。如果要确定EC2实例何时最终处于stopped
状态,则需要使用ec2:DescribeInstances
轮询EC2实例状态。
对于重启请求,一旦请求,几乎立即重启。正如您的链接所提到的,如果Linux实例未在4分钟内重新启动,AWS最终会强制重新启动。
由于在EC2实例硬件中发生重新启动,因此EC2实例的状态不会从running
更改。没有rebooting
州。除了监视EC2实例控制台日志中的消息之外,没有任何机制可以确定EC2实例的操作系统何时启动和/或完成重启。
您可以做的最好的事情就是发出重启请求并假设/希望在接下来的几分钟内重启。
作为替代方案,您可以停止并重新启动实例: