Crea un procesador de Imágenes en AWS con lambda y S3 events

En este post quiero mostrarte como podemos mezclar las tecnologías serverles de AWS con CDK para trabajr juntas, en este proyecto constuimos un procesador de imágenes completamente serverless. La idea es simple: subir una imagen a través de una API, redimensionarla en distintos tamaños usando Lambda, almacenarla en S3 y servirla rápidamente a través de CloudFront.

Este ejemplo puede servirte si estás buscando una solución para generar imágenes optimizadas para sitios web, sin tener que usar servicios externos ni mantener infraestructura.

🧩 Arquitectura general

El stack se compone de los siguientes servicios:

  • API Gateway: recibe solicitudes HTTP (subidas de imágenes).
  • AWS Lambda: procesa la imagen con sharp y genera versiones redimensionadas.
  • S3: almacena las imágenes originales y las versiones transformadas.
  • CloudFront: distribuye las imágenes con baja latencia y soporte para caché global.

Todo esto se define como código usando AWS CDK en TypeScript.


⚙️ ¿Cómo funciona?

  1. Haces un POST con una imagen al endpoint expuesto por API Gateway.
  2. La imagen es recibida por una función Lambda.
  3. Lambda usa la librería sharp para crear versiones en diferentes tamaños (por ejemplo, 400px, 800px, 1200px).
  4. Cada versión se guarda en una carpeta dentro del bucket S3.
  5. Luego puedes acceder a las imágenes directamente a través de una URL servida por CloudFront.

🛠️ Detalles del código

El proyecto está configurado para descargarse y desplegarse en tu cuenta AWS. Cuenta con una carpeta infra, donde encontrarás toda la definición de la infraestructura de servicios a utilizar en aws.

Dentro del readme existe una descripción general del contenido del proyecto que puedes clonar, o ajustarlo a tus necesidades.


✅ ¿Por qué es útil este ejemplo?

  • Muestra cómo integrar varios servicios de AWS en un flujo funcional.
  • Es una buena base para proyectos que requieran manipulación de imágenes.
  • Puedes extenderlo fácilmente para agregar filtros, conversión de formatos o protección de rutas.

📌 Conclusión

Este proyecto demuestra cómo usar Lambda, S3 y CloudFront con CDK para crear un procesador de imágenes funcional, escalable y sin servidores. Está pensado como ejemplo didáctico y punto de partida para proyectos reales.

👉 Puedes ver el código completo aquí:

https://github.com/gumonet/aws-cdk-assets-manager