我发现实例的状态在重启期间不会改变。那么有没有办法检查实例是否刚刚完成重启?
答案 0 :(得分:2)
重新启动是操作系统级事件,因此虚拟机管理程序不会知道操作系统重启。如您所述,在API / CLI级别重新启动期间,您无法从命令行工具检测到这些更改。
但是,假设您在Inbound Security组中启用了ICMP Echo Request,则可以使用PING报告实例的网络可达性。这类似于EC2状态检查在报告实例运行状况时所执行的操作。
在重启过程中,您会看到暂时丢弃PING数据包:
Reply from 10.0.0.1: bytes=32 time=97ms TTL=101
Reply from 10.0.0.1: bytes=32 time=80ms TTL=101
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Reply from 10.0.0.1: bytes=32 time=82ms TTL=101
Reply from 10.0.0.1: bytes=32 time=77ms TTL=101
Reply from 10.0.0.1: bytes=32 time=106ms TTL=101
然后数据包回复,在实例完成后重新启动。
我经常以这种方式使用PING来确定何时完成重启。您可以通过编程方式执行相同的操作。
答案 1 :(得分:0)
使用Node SDK,您可以使用instanceStatusOk
在rebootInstances
instanceStatusOk
>通过每15秒(最多40次)定期调用基础EC2.describeInstanceStatus()操作来等待instanceStatusOk状态。
示例:http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/EC2.html#instanceStatusOk-waiter