如何在Java中获取当前EC2实例状态

如何在Java中获取当前EC2实例状态,java,amazon-web-services,amazon-ec2,instancestate,Java,Amazon Web Services,Amazon Ec2,Instancestate,我正在寻找一些返回当前实例状态的代码,而不管实例当前是否正在运行。我发现一些代码可以在运行的实例上返回所需的结果,但是当我试图找到一个可以在停止的实例上工作的代码时,我被许多看起来类似的类所淹没,这些类似乎执行了类似的操作,但最终没有工作,或者没有很好的文档记录 无论如何,代码的运行实例版本如下: public Integer getInstanceStatus(String instanceId) { DescribeInstanceStatusRequest describeInst

我正在寻找一些返回当前实例状态的代码,而不管实例当前是否正在运行。我发现一些代码可以在运行的实例上返回所需的结果,但是当我试图找到一个可以在停止的实例上工作的代码时,我被许多看起来类似的类所淹没,这些类似乎执行了类似的操作,但最终没有工作,或者没有很好的文档记录

无论如何,代码的运行实例版本如下:

public Integer getInstanceStatus(String instanceId) {
    DescribeInstanceStatusRequest describeInstanceRequest = new DescribeInstanceStatusRequest().withInstanceIds(instanceId);
    DescribeInstanceStatusResult describeInstanceResult = ec2.describeInstanceStatus(describeInstanceRequest);
    List<InstanceStatus> state = describeInstanceResult.getInstanceStatuses();
    return state.get(0).getInstanceState().getCode();
}
public整数getInstanceStatus(字符串instanceId){
DescribeInstanceStatusRequest describeInstanceRequest=新的DescribeInstanceStatusRequest()。带有instanceId(instanceId);
DescribeInstanceStatusResult describeInstanceResult=ec2.describeInstanceStatus(describeInstanceRequest);
列表状态=describeInstanceResult.GetInstanceStatus();
返回状态.get(0.getInstanceState().getCode();
}

因此,我基本上是在寻找没有要求实例运行的
descripbeinstancestatus
限制的等效实例。我假设这是可能的,因为
getCode()
文档显示它能够返回值80,这表示一个停止的实例。

我再次回答我自己的问题。。。尽管我愿意接受其他建议

public Integer getInstanceStatus(String instanceId) {
    DescribeInstancesRequest describeInstanceRequest = new DescribeInstancesRequest().withInstanceIds(instanceId);
    DescribeInstancesResult describeInstanceResult = ec2.describeInstances(describeInstanceRequest);
    InstanceState state = describeInstanceResult.getReservations().get(0).getInstances().get(0).getState();
    return state.getCode();
}

再一次,我回答我自己的问题。。。尽管我愿意接受其他建议

public Integer getInstanceStatus(String instanceId) {
    DescribeInstancesRequest describeInstanceRequest = new DescribeInstancesRequest().withInstanceIds(instanceId);
    DescribeInstancesResult describeInstanceResult = ec2.describeInstances(describeInstanceRequest);
    InstanceState state = describeInstanceResult.getReservations().get(0).getInstances().get(0).getState();
    return state.getCode();
}

如果在请求中使用includealInstances(true)设置
,则可以获取未运行实例的状态

DescribeInstanceStatusResult result = ec2.describeInstanceStatus(new DescribeInstanceStatusRequest()
                .withInstanceIds(instanceIds).withIncludeAllInstances(true));

如果在请求中使用includealInstances(true)
设置
,则可以获取未运行实例的状态

DescribeInstanceStatusResult result = ec2.describeInstanceStatus(new DescribeInstanceStatusRequest()
                .withInstanceIds(instanceIds).withIncludeAllInstances(true));