簡體   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