номер
Тот факт, что экземпляр завершается, управляется в инфраструктуре AWS. Автоматическое масштабирование не позволяет «войти» в экземпляр EC2, чтобы вызвать что-либо.
Вместо этого вам нужно написать некоторый код для экземпляра, который проверяет, находится ли экземпляр в состоянии завершения, а затем предпринимает соответствующие действия.
Примером может быть:
- Lifecycle Hook отправляет уведомление через Amazon SNS
- Amazon SNS запускает функцию AWS Lambda
- Функция Lambda может добавить тег к экземпляру (например, Завершение = Да)
- Сценарий на экземпляре EC2 запускается каждые 15 секунд, чтобы проверить теги , связанные с экземпляром EC2 (на котором он выполняется). Если он находит тег, он запускает процесс завершения работы.
(Будьте осторожны, чтобы скрипт не запускался снова во время процесса выключения, иначе он может пытаться выполнять процесс выключения каждые 15 секунд!)
В качестве альтернативы, сохраняйте информацию о завершении работы в хранилище параметров диспетчера систем или в базе данных, но использование тегов выглядит очень хорошо масштабируемым!
Обновленная версия:
Спасибо raevilman за идею:
- Lifecycle Hook отправляет уведомление через Amazon SNS
- Amazon SNS запускает функцию AWS Lambda
- Функция Lambda вызывает команду запуска AWS Systems Manager для запуска кода на экземпляре
Намного проще!