Cómo programar el cierre nocturno de instancias en AWS

Hay varias formas de lograr esto que ya están cubiertas en otras respuestas, pero mi favorita es la solución fácil y de bajo costo: el Programador EC2 con AWS Lambda y CloudWatch.

El Programador EC2 aprovecha las etiquetas de recursos de Amazon EC2 y AWS Lambda para detener y reiniciar automáticamente las instancias de Amazon EC2 en un horario definido por el cliente. La solución es fácil de implementar y puede ayudar a reducir los costos operativos. Por ejemplo, una organización puede usar el Programador EC2 en un entorno de producción para detener automáticamente las instancias de Amazon EC2 todos los días, fuera del horario comercial. Para los clientes que dejan todas sus instancias de Amazon EC2 ejecutándose con plena utilización, esta solución puede generar hasta un 70% de ahorro en costos para aquellas instancias que solo son necesarias durante el horario comercial habitual (la utilización semanal se reduce de 168 horas a 50 horas).

Es una configuración de 5 minutos y se puede usar para programar cualquier instancia de EC2 que se ejecute en cualquier región simplemente agregando etiquetas predefinidas.

Descripción general de la solución – Programador EC2 – Respuestas de AWS

Documentación detallada – Programador EC2 en AWS

Arquitectura – Descripción general de la arquitectura

AWS Lambda admite eventos programados, básicamente un servicio similar a cron en la nube de AWS. Podría escribir una función Lambda simple que se ejecute todas las tardes a las 11 p.m., enumere sus instancias de EC2 y detenga las instancias relevantes (supongo que quiere decir ‘detener’, en lugar de ‘apagar’ también conocido como terminar, pero podría hacerlo).

Consideraría dos funciones Lambda (detener e iniciar) utilizando algún tipo de enfoque de etiquetado para indicar qué instancias son seguras para detener en la noche y reiniciar en la mañana, por ejemplo, una instancia podría tener las etiquetas StopAtUTC = 2300 y StartAtUTC = 0600. Consulte Uso de AWS Lambda con eventos programados.

También hay servicios comerciales de bajo costo que pueden hacer esto, por ejemplo, Skeddly.

AWS OpsWorks: la gestión de la configuración con Chef proporciona la capacidad de arrancar tanto instancias basadas en el tiempo como en la carga. Opsworks es un servicio gratuito proporcionado por AWS para manejar trabajos de DevOps. Utiliza Chef – Code Can | Recetas de chef para gestionar las instancias. Por lo tanto, puede crear sus propios libros de cocina personalizados para administrar la pila. También proporciona implementaciones de un clic en sus servidores a través de la GUI para que no tenga que jugar con la línea de comandos. Admite múltiples formas de extraer el código: S3 bucket, GIT son pocos. También se integra muy bien con herramientas de integración continua. En Box8, utilizamos Opsworks ampliamente y nos ha funcionado bien. Echa un vistazo y pruébalo.

Alternativa 1. Esta alternativa funciona mejor si no tiene un montón de instancias en ejecución con las que lidiar.

Directamente desde la línea de comando, suponiendo que haya instalado aws CLI:

aws ec2 stop-instance –instances-ids …

El reverso de las instancias stop es, por supuesto, las instancias start:

aws ec2 start-instance –instance-ids …

Referencias

Uso de instancias de Amazon EC2

¿Cómo puedo obtener una lista de solo instancias en ejecución cuando uso ec2-describe-tags


Alternativa 2. Examine los SDK de AWS: Python (boto), Ruby o Java. La codificación debe ser sencilla. Si se trata de 1700 instancias, el SDK es probablemente su única opción realista.

Puede usar GorillaStack para programar sus instancias para que se enciendan y apaguen durante la noche (o en cualquier momento). Funciona tanto en la programación RDS como en la programación EC2, por lo que tiene varios tipos de instancias cubiertas.

Puede establecer permisos para varios miembros de su equipo para establecer reglas de acuerdo con sus roles.

A menudo, las personas consideran que la característica más útil es la intervención mediante la cual pueden recibir notificaciones en Slack , HipChat o por correo electrónico antes de que se produzca un apagado (o inicio) … y pueden elegir posponer o cancelar la acción, digamos si está trabajando hasta tarde o tiene una carga de trabajo que desea seguir ejecutando.

Hemos estado usando Botmetric, y puede hacer esa pieza tan fácilmente. Más que eso, le permite automatizar muchas cosas en AWS sin preocuparse de escribir código usted mismo. Puede continuar y utilizar la funcionalidad estándar de Botmetric.

Si está ejecutando instancias basadas en Linux, puede programar el apagado utilizando la función crontab. Visite el siguiente enlace para obtener más información:

http://askubuntu.com/questions/5

Puede escribir un script de shell para lo mismo: https://spin.atomicobject.com/20

o puede usar boto: http://www.4synergy.nl/auto-star

y hay algunas herramientas de terceros también

https://forums.aws.amazon.com/th

Acabamos de lanzar un nuevo servicio PowerDown que cerrará instancias EC2, grupos AutoScale, RDS y contenedores Fargate. Cada usuario especifica cuándo necesitan recursos disponibles y luego PowerDown calcula el cronograma. Puede activar / desactivar colecciones completas de recursos al agruparlos en grupos de recursos. Tiene web UI y CLI. Nos encantaría recibir algunos comentarios: https://www.powerdown.io

Es posible que desee probar los servicios de automatización y monitoreo de Cloudlytics que ofrece un programador EC2. Puede usar el programador para automatizar eventos de inicio y detención en la frecuencia deseada (diaria, semanal, mensual).

Aquí hay un par de blogs que pueden darle una mejor idea de esta característica.

http://blog.cloudlytics.com/clou

http://blog.cloudlytics.com/auto

Creo que la mejor manera de hacerlo es con una etiqueta ‘powersave’ y un trabajo programado de Lambda. En mi entorno, todo se ejecuta al mismo tiempo, por lo que mis programadores (inicio y apagado) se ejecutan solo una vez al día. Si desea que las cosas comiencen y se detengan en diferentes momentos, puede ejecutar el trabajo con más frecuencia y poner en lógica para analizar un tiempo en la etiqueta. Mi código se puede encontrar aquí: apagado nocturno EC2

Como se mencionó anteriormente en el hilo, es posible que desee probar un servicio de automatización y programación que ofrece un planificador EC2. Luego, puede automatizar fácilmente los eventos de inicio y detención cuando sea necesario, ya sea diariamente, semanalmente o mensualmente.

Una alternativa a las opciones ya mencionadas aquí sería CloudRanger, que puede probar gratis durante 30 días para ver si funciona para usted. Espero que esto ayude.

Suponiendo que está utilizando grupos de escalado automático: verifique la acción programada para ASG

Escalado programado

Puedes usar mi software gratuito CloudRoboAWSScheduler

Existe un servicio de terceros llamado VMPower que le permite simplemente programar los tiempos de apagado de la instancia en un calendario. También te permitirán cambiar el tamaño en un horario. También es gratis para máquinas virtuales pequeñas.

Es posible que desee revisar este servicio (sin afiliación) http://www.parkmycloud.com/

Use Cloudlytics, le permite hacerlo con una simple interfaz de usuario.