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 に答える