Я ищу некоторый код, который вернет текущее состояние экземпляра независимо от того, запущен ли данный экземпляр или нет. Я нашел код, который вернет желаемый результат на запущенном экземпляре, но, пытаясь найти тот, который будет работать на остановленных экземплярах, я был поражен рядом похожих классов, которые, похоже, выполняли аналогичную операцию, но в конце, не работали или плохо документированы.
Во всяком случае, версия исполняемого экземпляра кода ниже:
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, которое обозначает остановленный экземпляр.
Если вы установили withIncludeAllInstances(true)
в свой запрос, вы можете получить состояния для withIncludeAllInstances(true)
экземпляров.
DescribeInstanceStatusResult result = ec2.describeInstanceStatus(new DescribeInstanceStatusRequest()
.withInstanceIds(instanceIds).withIncludeAllInstances(true));
И еще раз, я отвечаю на свой вопрос... Хотя я открыт для других предложений.
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();
}