[英]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.