В SDK нет модели событий или другого сигнала, сообщающего вам, когда объект EC2 меняет состояние, - единственный способ выяснить это - повторно вызвать вызов DescribeXXXXXXX для объекта, скажем, каждые 30 секунд , пока поле состояния не изменится.
Существует конечное минимальное время для выполнения вызова и ответа на него, поэтому вам нужно найти интервал, который не вызывает запросы, прежде чем предыдущий будет завершен. Или просто дождитесь ответа, а затем подождите еще n секунд, прежде чем повторно выполнить вызов. Вы также не хотите спамить API-интерфейс AWS с помощью быстрых запросов, даже если они рассчитаны между ответами. В моем приложении контроллера я установил интервал в 30 секунд, выдал запрос, дождался ответа, а затем вычел истекшее время из интервала и просидел так долго. Таким образом, в многопоточной модели я могу отслеживать изменения состояния многих объектов одновременно, не перегружая ни локальный процессор, ни API.
После того, как изменение состояния было обнаружено (и предполагая, что новое состояние является ожидаемым - не забудьте обработать режимы отказа), вы можете получить широкий спектр описательной информации, включая общедоступный адрес DNS (в случае объекты экземпляров) из структуры, возвращаемой в объекте ответа API.