2014-03-18 2 views
1

인스턴스가 현재 실행 중인지 여부에 관계없이 현재 인스턴스 상태를 반환하는 코드를 찾고 있습니다. 실행중인 인스턴스에서 원하는 결과를 반환하는 일부 코드를 찾았지만 중지 된 인스턴스에서 작동하는 코드를 찾으려고 할 때 유사한 작업을 수행하는 것으로 보이는 여러 비슷한 종류의 클래스에 압도 당했지만 결국에는 , 작동하지 않거나 제대로 문서화되지 않았습니다.Java에서 현재 EC2 인스턴스 상태를 얻는 방법

어쨌든, 코드의 실행중인 인스턴스의 버전은 다음과 같습니다 :

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을 반환 할 수 있다고 보여주기 때문에 가능하다고 가정합니다.

답변

2

그리고 나는 다시 내 자신의 질문에 대답합니다 ... 나는 다른 제안에 공개되어 있지만.

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

요청시 withIncludeAllInstances(true)을 설정하면 실행되지 않는 인스턴스의 상태를 가져올 수 있습니다.

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

내 일을 저장했습니다 .... 덕분에 많이 –