终止实例永远不会返回终止状态aws sdk

时间:2013-11-09 21:24:13

标签: java groovy amazon-web-services

我使用带有一些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控制台,我可以看到这些实例终止了......这里发生了什么?为什么我没有得到终止的状态?

由于

1 个答案:

答案 0 :(得分:2)

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