Getting EC2 Java Interface State

I am trying to automate some things on AWS and I am using the Java API for this. I can start several instances that I want, but I cannot find a suitable class or method that can get me the current state of the instance (for example, start, stop, etc.).

I tried this

DescribeInstanceStatusRequest describeInstance = new DescribeInstanceStatusRequest().withInstanceIds(instances.get(i).getInstanceId()); DescribeInstanceStatusResult attr = ec2.describeInstanceStatus(describeInstance); List<InstanceStatus> state = attr.getInstanceStatuses();

not sure why instance status is a list

Can someone point me to the correct API call.

Thanks in advance

+6
source share
2 answers

I solved the problem. working code

 DescribeInstanceStatusRequest describeInstanceRequest = new DescribeInstanceStatusRequest().withInstanceIds(i-xxxxxxxx); DescribeInstanceStatusResult describeInstanceResult = ec2.describeInstanceStatus(describeInstanceRequest); List<InstanceStatus> state = describeInstanceResult.getInstanceStatuses(); while (state.size() < 1) { // Do nothing, just wait, have thread sleep if needed describeInstanceResult = ec2.describeInstanceStatus(describeInstanceRequest); state = describeInstanceResult.getInstanceStatuses(); } String status = state.get(0).getInstanceState().getName(); 
+6
source

I just looked at this problem

From the documentation ( http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeInstanceStatus.html ),

DescribeInstanceStatus returns information for operational instances only.

Thus, you can always wait if the machine is stopped, and not restarted.

DescribeInstances ( http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeInstances.html ) returns the status of all machines.

+3
source

Source: https://habr.com/ru/post/905783/


All Articles