Автоматически запускать экземпляр EC2 при запросе DNS

Автоматически запускать экземпляр EC2 при запросе DNS

У меня есть несколько экземпляров EC2, на которых запущено веб-приложение в Docker, и я настроил их на автоматическую остановку вне рабочего времени (например, с 7 утра до 7 вечера) для сокращения расходов. Я хотел бы узнать, могу ли я автоматизировать запуск экземпляра при запросе URL веб-приложения (даже когда EC2 остановлен), на случай, если кто-то захочет получить доступ вне рабочего времени, настроенного ранее.

Некоторые люди рекомендовали мне запустить приложение в AWS Lambda, но как мне запустить функцию с помощью вызова DNS?

решение1

Это не так просто сделать. Вы можете найти какой-то сложный способ с лямбдой и протоколированием route 53, но даже если вы это сделаете, запуск экземпляра EC2 может занять 5 минут. Это означает, что к моменту запуска экземпляра EC2 запрос уже истек.

Лямбда

Переписывание вашего приложения на лямбда / бессерверные вычисления устранит эту проблему. Вы платите только за запрос, и в большинстве случаев вы платите немного. Большинство бессерверных приложений стоят очень мало. Некоторые, однако, могут стоить намного дороже, чем экземпляры EC2.

Практичный вариант

Наиболее практичным способом снижения затрат, вероятно, является использование автоматического масштабирования и небольших вычислительных единиц и масштабирования, а не меньшего количества крупных экземпляров. Вы поддерживаете один небольшой набор ресурсов, работающих 24/7, с большим количеством ресурсов, работающих в периоды высокой нагрузки.

С контейнерами вы можете рассмотреть возможность использования Fargate для поддержания работы контейнера с низкими ресурсами 24/7, а затем наращивать ресурсы по мере роста нагрузки. Это может быть либо автоматическое масштабирование, либо масштабирование по расписанию. Я не знаю, можно ли использовать Fargate и EC2 в одном кластере ECS, но если можно, то это может решить проблему.

решение2

Невозможно запустить экземпляр ec2, когда запрашивается URL веб-приложения. Запрос http истечет по тайм-ауту до того, как экземпляр будет готов обслужить запрос.

Никакой аутентификации не будет, а это значит, что любой случайный запрос от бота приведет к запуску экземпляра ec2.

Теоретически, должно быть возможно создать стек для этого, например, используя ALB, направляющий запросы по определенному пути к функции Lambda, которая могла бы запустить экземпляр ec2. Но ресурсы, задействованные для этого, будут дороже, чем позволить экземпляру работать 24/7.

Если вы хотите сократить расходы, AWS может оказаться не лучшим поставщиком для вас.

Связанный контент