2

我使用带有一些 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..

例如,如果我登录到 aws 控制台,我从未获得终止状态,我可以看到这些实例被终止......这里发生了什么?为什么我从来没有收到终止返回的状态?

谢谢

4

1 回答 1

2

您需要刷新状态。使用从 terminate 返回的实例作为 ec2.describeInstances() 的输入。然后,您可以检查所描述实例的状态以确定它们何时完成终止。

于 2013-11-10T03:57:07.367 回答