Iniciar automáticamente la instancia EC2 cuando se solicita DNS

Iniciar automáticamente la instancia EC2 cuando se solicita DNS

Tengo algunas instancias EC2 que ejecutan una aplicación web dentro de Docker y las configuro para que se detengan automáticamente mientras está fuera del horario laboral (por ejemplo, de 7 a. m. a 7 p. m.) para reducir costos. Me gustaría saber si puedo automatizar la instancia para que se inicie cuando se solicita la URL de la aplicación web (incluso cuando EC2 está detenido), en caso de que alguien quiera acceder fuera del horario comercial previamente configurado.

Algunas personas me recomendaron ejecutar la aplicación dentro de AWS Lambda, pero ¿cómo activo la función para que comience con una llamada DNS?

Respuesta1

Esto no es fácilmente posible. Es posible que encuentre alguna forma compleja con el registro lambda y la ruta 53, pero incluso si lo hace, puede tardar 5 minutos en iniciar una instancia EC2. Eso significa que cuando se inicia la instancia EC2, la solicitud ha agotado el tiempo de espera.

lambda

Reescribir su aplicación en computación lambda/sin servidor eliminaría este problema. Sólo paga por solicitud y no paga mucho en la mayoría de los casos. La mayoría de las aplicaciones sin servidor cuestan muy poco. Algunas, sin embargo, pueden costar mucho más que las instancias EC2.

Opción práctica

La forma más práctica de mantener bajos los costos es probablemente utilizar el escalado automático y unidades de computación pequeñas y escalar horizontalmente, en lugar de menos instancias grandes. Mantiene un pequeño conjunto de recursos en funcionamiento las 24 horas del día, los 7 días de la semana, y más recursos en funcionamiento durante los períodos de mayor actividad.

Con los contenedores, podría considerar usar Fargate para mantener un contenedor de bajos recursos funcionando las 24 horas del día, los 7 días de la semana y luego aumentar más recursos cuando aumenta la carga. Esto podría ser un escalado automático o un escalado programado. No sé si puede usar Fargate y EC2 dentro del mismo clúster ECS, pero si puede, eso podría resolver el problema.

Respuesta2

No es posible iniciar una instancia ec2 cuando se solicita la URL de la aplicación web. La solicitud http habrá expirado antes de que la instancia esté lista para atender la solicitud.

No habría autenticación involucrada, lo que significa que cualquier solicitud aleatoria de un bot desencadenaría el lanzamiento de la instancia ec2.

En teoría, debería ser posible crear una pila para hacerlo, por ejemplo, utilizando un ALB que enruta solicitudes a una ruta específica a una función Lambda que podría iniciar una instancia ec2. Pero los recursos involucrados serían más costosos que dejar que la instancia funcione las 24 horas del día, los 7 días de la semana.

Si desea reducir costos, es posible que AWS no sea el mejor proveedor para usted.

información relacionada