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.

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-

Lenguaje

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:

Función

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í:

code

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

Reglas

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

configuración reglas

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

Cron

Damos click en continuar, y seleccionamos invocar función de Lambda para conectar a este servicio:

funciones

Seleccionamos la política indicada:

Final

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/