Lambda es un servicio de AWS que ejecuta código sin la necesidad de aprovisionar un servidor, lo que comúnmente conocemos como "tecnologías serverless", funciona como respuesta a eventos, lo que la convierte en una tecnología más eficaz en costos (aunque se necesitan otros detalles para profundizar en su selección).
Para este ejercicio, creamos una función Lambda para automatizar el proceso de limpieza de volúmenes EBS con poco uso, es decir, que tienen al menos 30 días sin uso -como nota, lo revisamos a nivel proyecto y se determinó que es funcional, pero recomiendo validar los períodos para que la aplicación de la función Lambda tenga mejores resultados-.
Para alcanzar el ejercicio, necesitamos acceder a nuestra consola y dirigirnos hacia el servicio Lambda.
En este panel, tendremos toda la información del servicio, las métricas, políticas activas, entre otras. Daremos click en "Crear función", lo primero que debemos hacer es dar un nombre a la función para identificarla al momento conectar a un evento periódico. Ahora, seleccionamos un tipo de ejecución o lenguaje del código que adjuntaremos en la función. -Para este ejercicio, recomendamos por encima de Python 3.9-
Los elementos relacionados con los permisos y la arquitectura los dejamos de forma predeterminada. Damos click en crear función y tendremos una interfaz como la siguiente, para la configuración del código y el seguimiento:
Para este ejercicio colocamos el siguiente código:
import boto3
import datetime
# Cliente de EC2
ec2 = boto3.client('ec2')
def lambda_handler(event, context):
# Obtener la fecha actual
now = datetime.datetime.now(datetime.timezone.utc)
days_threshold = 30 # Número de días antes de eliminar snapshots
# Listar snapshots de la cuenta
snapshots = ec2.describe_snapshots(OwnerIds=['self'])["Snapshots"]
for snapshot in snapshots:
snapshot_date = snapshot["StartTime"]
age = (now - snapshot_date).days
if age > days_threshold:
print(f"Eliminando snapshot {snapshot['SnapshotId']} creado el {snapshot_date}")
ec2.delete_snapshot(SnapshotId=snapshot["SnapshotId"])
return {"statusCode": 200, "body": "Limpieza de snapshots completada"}
Dentro de la función, visualizaremos el código así:
En este paso, es posible revisar todas las propiedades de la función, y probar su funcionamiento. Ya que tenemos la función, el siguiente paso es conectarla con Event Bridge para que la función se ejecute periódicamente en relación con criterios específicos.
Al buscar Amazon Event Bridge desde la barra de búsqueda de la consola, damos click en "Crear una regla" para visualizar el panel de configuración de la regla
Las configuraciones son sencillas, las primeras implican colocar nombre a las reglas, descripciones y etiquetas como elementos de buenas prácticas en la identificación y asignación de las reglas y funciones
El siguiente paso es el programador de reglas, dentro de él, podremos configurar la programación recurrente
Con este cron, se aplicará la regla de forma diaria a las 3 am en UTC
Damos click en continuar, y seleccionamos invocar función de Lambda para conectar a este servicio:
Seleccionamos la política indicada:
Para nuestro caso, dejamos los demás elementos sin edición de forma predeterminada, y creamos la programación
Ahora, la función se ejecutará de forma periódica de forma exitosa y eliminaremos los recursos inutilizados, optimizando el costo de nuestra infraestructura.
Referencias:
AWS (2025). AWS Lambda, productos, https://aws.amazon.com/es/lambda/