2016-10-12 6 views
0

Я хочу вызвать экземпляр EC2 в определенное время, запустить пакетное задание java и закрыть экземпляр после завершения, используя Java. Я понял, как вызвать экземпляр и запустить свою работу. Нужно знать, как я могу закрыть его после выполнения задания. Выяснилось, что это возможно, изменив значение «setDesiredCapacity» значения группы автомасштабирования на 0. этот метод принимает имя группы автоматического масштабирования в качестве входного. Но поскольку имя ASG динамически создается, не уверен, как я могу получить его на моей Java-задаче. Какие-либо предложения?Изменение желаемой емкости группы автомасштабирования в java

ответ

1

Оказывается, что ваши требования:

  • На регулярной основе, запустить экземпляр Amazon EC2, который будет запускать пакетное задание
  • По завершении работы, завершить экземпляр EC2

Вместо того, чтобы использовать Auto Scaling (которая предназначена для динамического масштабирования мощности на основе по требованию), я бы рекомендовал:

  • Используйте расписание для запуска нового экземпляра EC2. Расписание может быть заданием cron на машине где-нибудь (на EC2 или в любом месте в Интернете), или вы можете использовать Amazon CloudWatch Events для запуска функции Lambda, которая запускает экземпляр.
  • Когда пакетное задание завершено, завершить экземпляр, что может быть сделано с помощью нескольких методов:
    • Отправить команду операционной системы выключения. Если экземпляр EC2 запущен с поведением из terminate, то экземпляр автоматически будет завершен. См. Также: Changing the Instance Initiated Shutdown Behavior
    • В качестве альтернативы, попросите приложение обратиться в AWS с вызовом API TerminateInstances, чтобы напрямую закрыть экземпляр.

Или вы могли бы быть красиво и современно и не использовать экземпляр Amazon EC2!

С вашей пакетное задание в Java, вы могли бы использовать Lambda function вместе с графиком CloudWatch событий. Расписание запускает функцию Lambda, которая может запускать ваш Java-код. Когда это будет закончено, Лямбда автоматически прекратится. Вы получаете только счет за 100 мс использования.

Обратите внимание, что функции лямбда могут выполняться для максимум 5 минут, поэтому, если ваша операция занимает больше времени, Лямбда не является подходящим решением.

+0

спасибо за предложения. Лямбда не работает для меня из-за ограничения по времени, как вы уже упоминали. – Dileep

+0

С помощью TerminateInstances, хотя экземпляр будет прерван, не будет ли группа автоматического масштабирования снова разворачивать другой экземпляр, если он видит, что его нет? – Dileep

 Смежные вопросы

  • Нет связанных вопросов^_^