Как получить текущее состояние экземпляра EC2 в Java

1

Я ищу некоторый код, который вернет текущее состояние экземпляра независимо от того, запущен ли данный экземпляр или нет. Я нашел код, который вернет желаемый результат на запущенном экземпляре, но, пытаясь найти тот, который будет работать на остановленных экземплярах, я был поражен рядом похожих классов, которые, похоже, выполняли аналогичную операцию, но в конце, не работали или плохо документированы.

Во всяком случае, версия исполняемого экземпляра кода ниже:

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, которое обозначает остановленный экземпляр.

Теги:
amazon-web-services
amazon-ec2

2 ответа

2

Если вы установили withIncludeAllInstances(true) в свой запрос, вы можете получить состояния для withIncludeAllInstances(true) экземпляров.

DescribeInstanceStatusResult result = ec2.describeInstanceStatus(new DescribeInstanceStatusRequest()
                .withInstanceIds(instanceIds).withIncludeAllInstances(true));
  • 0
    Это спасло мои дни .... большое спасибо
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();
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню