如何以编程方式检查EC2实例是否已完成重启?

时间:2016-04-23 15:31:23

标签: amazon-web-services amazon-ec2 aws-sdk aws-cli

我发现实例的状态在重启期间不会改变。那么有没有办法检查实例是否刚刚完成重启?

2 个答案:

答案 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)

instance status

使用Node SDK,您可以使用instanceStatusOkrebootInstances

之后进行检查

instanceStatusOk>通过每15秒(最多40次)定期调用基础EC2.describeInstanceStatus()操作来等待instanceStatusOk状态。

示例:http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/EC2.html#instanceStatusOk-waiter