Если бы я был на вашем месте, я бы, вероятно, начал с попытки запуска задания cron на веб-сервере каждую ночь во время отлива и отслеживания использования ресурса, чтобы убедиться, что он не мешает веб-серверу.
Если вы обнаружите, что он не очень хорошо работает или у вас высокие стандарты элегантности вашей архитектуры (я могу восхищаться этим), то вам, вероятно, потребуется запустить отдельный экземпляр.
Я согласен с тем, что запускать экземпляр 24 часа в сутки для задания, которое нужно запускать раз в ночь, кажется бесполезным.
Вот один подход: задание cron на вашем основном компьютере (в настоящее время веб-сервер) может запустить новый экземпляр для запуска задачи. Он может передать сценарий пользовательских данных, который запускается при запуске экземпляра, и экземпляр может завершить работу самостоятельно, когда завершит задачу (где для экземпляра-init-shutdown-поведение было установлено «завершить»).
К сожалению, это не соответствует вашему желанию обеспечить разделение интересов, усложняется, когда вы начинаете масштабирование до нескольких веб-серверов, и требует, чтобы ваш веб-сервер был активен для выполнения задания.
Пару месяцев назад я предложил другой подход для запуска экземпляра по расписанию cron, полностью полагаясь на существующие функции AWS и не требуя запуска других серверов.
Основная идея состоит в том, чтобы использовать автоматическое масштабирование Amazon с повторяющимся действием, которое каждую ночь масштабирует группу от «0» до «1» в определенное время. Экземпляр может завершить сам себя, когда задание выполнено, а автоматическое масштабирование может очиститься намного позже, чтобы убедиться, что оно завершено.
Я предоставил более подробную информацию и рабочий пример в этой статье:
Запуск экземпляров EC2 в повторяющемся расписании с автоматическим масштабированием
http://alestic.com/2011/11/ec2-schedule-instance