# Ahorrando costos de hasta un 70% en instancias EC2

> ¿Quizás a más de uno le ha pasado que ha dejado corriendo una instancia EC2 y olvido apagarla? 💸

Ahora imagina que tienes corriendo no 1 sino varias instancias EC2 con las que tu equipo trabaja semana tras semana, eso se traduce en 168 horas semanales, en un horario laboral digamos de unas 10 horas (LUN-VIE de 8:30 am a 6:30 pm) menos de la mitad de las horas son donde realmente se hace uso de esas instancias.

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1661780825226/fjAFhV9lK.png align="center")

Y si te digo que podemos iniciar y detener las instancias EC2 en función de las etiquetas (tags) para ahorrar costos de hasta un 70% en instancias que solo son necesarias durante ese u otro horario laboral (utilización semanal reducida de 168 horas a ~50 horas).

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1661780765283/wQU0zKk0v.png align="center")

Para lograr vamos a hacer uso de funciones lambda para programarlo en función de las horas de trabajo.

![Captura de Pantalla 2022-08-29 a la(s) 09.45.21.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1661784325819/9xC4a6GSw.png align="left")

## Pero ¿qué es Lambda?

> Con serverless no necesitas aprovisionar infraestructura, ni hacer mantenimiento, ni ocuparte del autoescalado. Es altamente disponible y seguro. Serverless no solo es para computo, puede ser para base de datos, almacenamiento u otros servicios

* Es una de las opciones de computo que nos ofrece AWS, en este caso una opción *serverless*
    
* La unidad de escala es una función y el nivel de abstracción es un *runtime*
    
* Configuramos el código para que se ejecute cuando lo necesite (a demanda) en base por ejemplo a ciertos eventos.
    
* Su modelo de pago es por uso (ms) de acuerdo al tiempo de ejecución de la función lambda con incrementos de 1 ms
    

![Captura de Pantalla 2022-08-29 a la(s) 08.50.26.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1661781028943/Cspx33E-k.png align="left")

## y ¿qué es EventBridge?

> La versión 2 de Amazon CloudWatch Events

* Facilita la creación de aplicaciones basadas en eventos a escala mediante eventos generados
    
* Puede configurar reglas de enrutamiento para determinar a dónde enviar los datos
    
* Cuenta con un bus de evento por defecto (en CloudWatch Events tiene solo un bus)
    
* Puede tener buses de eventos adicionales
    

![Diseño sin título (9).png](https://cdn.hashnode.com/res/hashnode/image/upload/v1661781572504/ZaTRWFrxh.png align="left")

## CRON

* Cron es un programa de utilidad de Unix que **se utiliza para ejecutar comandos o scripts programados.**
    
* Con una expresión cron, **puede definir una regla que se active a una hora especificada** de un determinado día de cada semana o mes
    
* Las expresiones Cron **tienen seis campos obligatorios**, que están separados por un espacio en blanco.
    

![Captura de Pantalla 2022-08-29 a la(s) 08.56.58.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1661781423378/BCYChKLmE.png align="left")

## ¡Manos a la obra!

### ¿Qué necesitamos?

1. Crear una **política y un rol de ejecución** de AWS Identity and Access Management (IAM) personalizados \*\*para la función Lambda \*\*
    
2. **Crear las funciones Lambda** que detengan e inicien las instancias de EC2 en base al tag de la instancia
    
3. **Probar** las funciones Lambda
    
4. **Crear reglas de EventBridge** que desencadenen la función en un horario.
    

En este video junto a la comunidad de AWS Girls Chile, les explico el paso a paso de la solución 😊

<iframe width="560" height="315" src="https://www.youtube.com/embed/cmBR1BxFSj0"></iframe>
