2012-01-12 67 views
6

我想在AWS上自动化一些内容,并且正在使用Java API来执行此操作。我能够启动一些我想要的实例,但是我无法找到能够获取实例当前状态的正确类或方法(如运行,停止等)。获取EC2实例Java API的状态

我想这

DescribeInstanceStatusRequest describeInstance = new DescribeInstanceStatusRequest().withInstanceIds(instances.get(i).getInstanceId()); DescribeInstanceStatusResult attr = ec2.describeInstanceStatus(describeInstance); List<InstanceStatus> state = attr.getInstanceStatuses();

不知道为什么实例状态是一个列表

可有人请点我正确的API调用。

在此先感谢

回答

6

我觉得这个问题。工作代码

DescribeInstanceStatusRequest describeInstanceRequest = new DescribeInstanceStatusRequest().withInstanceIds(i-xxxxxxxx); 
DescribeInstanceStatusResult describeInstanceResult = ec2.describeInstanceStatus(describeInstanceRequest); 
List<InstanceStatus> state = describeInstanceResult.getInstanceStatuses(); 
while (state.size() < 1) { 
    // Do nothing, just wait, have thread sleep if needed 
    describeInstanceResult = ec2.describeInstanceStatus(describeInstanceRequest); 
    state = describeInstanceResult.getInstanceStatuses(); 
} 
String status = state.get(0).getInstanceState().getName(); 
+0

现在我该如何等到Tomcat在该EC2实例上启动? 。 – 2014-01-16 13:37:08

+1

如果你想获得的所有实例的状态,你可以做'DescribeInstanceStatusRequest请求=新DescribeInstanceStatusRequest()withIncludeAllInstances(真) \t \t \t \t .withInstanceIds(instanceIds);' – 2016-10-05 10:18:20

3

我只是看这个问题

从文档(http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeInstanceStatus.html),

DescribeInstanceStatus仅适用于运行状态情况下,返回的信息。

因此,如果机器停止而不是重新启动,您可能会一直等待。

DescribeInstances(http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeInstances.html)返回所有机器的状态。

+0

这是一个具体的使用情况下,我知道这是重新启动或开始,而不是停止。 此问题刚刚发布,我不确定AWS API是否已更改。 – tazo 2014-01-25 18:15:56