繁体   English   中英

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

[英]How to get current EC2 instance state in Java

我正在寻找一些将返回当前实例状态的代码,而不管实例当前是否在运行。 我发现一些代码可以在正在运行的实例上返回期望的结果,但是当试图找到一个可以在停止的实例上运行的代码时,我被许多看起来执行类似操作的类看上去不知所措,但是最后,无法正常工作或记录不良。

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

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();
}

所以我基本上是在寻找没有DescribeInstanceStatus限制的要求实例正在运行的等效对象。 我认为这是可能的,因为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();
}

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM