Я хочу вызвать экземпляр EC2 в определенное время, запустить пакетное задание java и закрыть экземпляр после завершения, используя Java. Я понял, как вызвать экземпляр и запустить свою работу. Нужно знать, как я могу закрыть его после выполнения задания. Выяснилось, что это возможно, изменив значение «setDesiredCapacity» значения группы автомасштабирования на 0. этот метод принимает имя группы автоматического масштабирования в качестве входного. Но поскольку имя ASG динамически создается, не уверен, как я могу получить его на моей Java-задаче. Какие-либо предложения?Изменение желаемой емкости группы автомасштабирования в java
0
A
ответ
1
Оказывается, что ваши требования:
- На регулярной основе, запустить экземпляр Amazon EC2, который будет запускать пакетное задание
- По завершении работы, завершить экземпляр EC2
Вместо того, чтобы использовать Auto Scaling (которая предназначена для динамического масштабирования мощности на основе по требованию), я бы рекомендовал:
- Используйте расписание для запуска нового экземпляра EC2. Расписание может быть заданием
cron
на машине где-нибудь (на EC2 или в любом месте в Интернете), или вы можете использовать Amazon CloudWatch Events для запуска функции Lambda, которая запускает экземпляр. - Когда пакетное задание завершено, завершить экземпляр, что может быть сделано с помощью нескольких методов:
- Отправить команду операционной системы выключения. Если экземпляр EC2 запущен с поведением из
terminate
, то экземпляр автоматически будет завершен. См. Также: Changing the Instance Initiated Shutdown Behavior - В качестве альтернативы, попросите приложение обратиться в AWS с вызовом API
TerminateInstances
, чтобы напрямую закрыть экземпляр.
- Отправить команду операционной системы выключения. Если экземпляр EC2 запущен с поведением из
Или вы могли бы быть красиво и современно и не использовать экземпляр Amazon EC2!
С вашей пакетное задание в Java, вы могли бы использовать Lambda function вместе с графиком CloudWatch событий. Расписание запускает функцию Lambda, которая может запускать ваш Java-код. Когда это будет закончено, Лямбда автоматически прекратится. Вы получаете только счет за 100 мс использования.
Обратите внимание, что функции лямбда могут выполняться для максимум 5 минут, поэтому, если ваша операция занимает больше времени, Лямбда не является подходящим решением.
спасибо за предложения. Лямбда не работает для меня из-за ограничения по времени, как вы уже упоминали. – Dileep
С помощью TerminateInstances, хотя экземпляр будет прерван, не будет ли группа автоматического масштабирования снова разворачивать другой экземпляр, если он видит, что его нет? – Dileep