Parcheado automático de instancias EC2 con CloudWatch y Lambda

Share on facebook
Share on twitter
Share on linkedin
Share on whatsapp
Share on telegram
Share on email

He estado mirando cómo parchear periódicamente mis instancias de EC2 de manera automática. En un principio había pensado en AWS Systems Manager, que tiene un módulo de parcheo, pero las buenas prácticas dicen que antes de parchear nada tienes que apagar el servidor y hacer un snapshot del disco de sistema operativo y, SSM no tiene o no he sabido ver la manera de realizar este punto.

Así que me he decantado por CloudWatch y Lambda para parchear una instancia T2 medium de pruebas.

Desde CloudWatch podemos llamar a las funciones para:

  • Parar instancias EC2
  • Crear un snapshot de un disco EBS
  • Ejecutar un comando en remoto con SSM

Pero le falta la función de arranque de instancias EC2. Por eso he utilzado Lambda.

Hosting SSD

El código fuente de esta función es el siguiente:

Rebajas
Crucial CT2000X8SSD9 X8-SSD portátil 2TB, de hasta 1050 MB/s, USB 3.2, Unidad de estado...
  • Rendimiento óptimo con velocidades de lectura de hasta 1050 MB/s
  • Funciona con Windows, Mac, iPad Pro, Chromebook, Android, Linux, PS4 y Xbox One con conectores USB-C 3.2 Gen2 y USB-A
  • Diseño hermoso y duradero, con un núcleo unibody de aluminio anodizado

import boto3

ec2 = boto3.client(‘ec2′, region_name=’eu-west-1’)

def lambda_handler(event, context):
instances=event[‘instanceid’]
ec2.start_instances(InstanceIds=[instances])
print ‘Instancia arranc ada: ‘ + str([instances])

Como se puede observar, le paso por parámetro el ID de la instancia que quiero arrancar.

Seguidamente, defino el diagrama de flujo de CloudWatch y lo programo mensualmente. Veréis que fácil:

  • Programamos la tarea cada 30 días:

Por cierto, si la quisiéramos programar a las 22:30 de cada mes, elegiríamos «Cron expression» con el siguiente valor:

30 19 07 * ? *

Tienes más información de cron expresion en este enlace.

Seguidamente, configuramos el diagrama de flujo de parcheo:

  • Paramos la instancia (pasamos por parámetro su ID).
  • Creamos un snapshot del disco de root (volvemos a pasar por parámetro su ID).
  • La arrancamos con la función Lambda creada anteriormente.
  • Con AWS Systems Manager ejecutamos el comando de actualización de parches (yum update) y de reboot.

Estas son las capturas de pantalla del diagrama de flujo:

¿Te ha gustado? Compártelo

Share on facebook
Share on twitter
Share on linkedin
Share on whatsapp
Share on telegram
Share on email
About Author

Contenido Relacionado

Artículos Recientes

Deja un comentario