我使用带有一些Groovy代码的aws Java SDK。
我已经启动了2个ec2实例,然后我已经要求终止它们。然后,我想等到这些实例终止,然后再删除依赖于这些实例的其他资源。
我有以下代码检查实例的终止。 (while循环永不退出)
//instanceIds == a list of instance ids as strings. Ive previously requested that these instances be terminated
//Terminate instances
TerminateInstancesRequest terminateInstancesRequest = new TerminateInstancesRequest()
terminateInstancesRequest.setInstanceIds(instanceIds)
TerminateInstancesResult terminateInstancesResult = ec2.terminateInstances(terminateInstancesRequest)
//Wait for instances to terminate
terminateInstancesResult.getTerminatingInstances().each {
while (it.getCurrentState().name != "terminated") {
Thread.sleep(5000)
println it.getCurrentState().name
println it.getCurrentState().code
}
}
我将以下内容打印到控制台
shutting-down
32
shutting-down
32
etc..
E.g。我从来没有得到终止状态,如果我登录到aws控制台,我可以看到这些实例终止了......这里发生了什么?为什么我没有得到终止的状态?
由于
答案 0 :(得分:2)
您需要刷新状态。使用terminate返回的实例作为ec2.describeInstances()的输入。然后,您可以检查所描述实例的状态,以确定它们何时完成终止。