Resumen del proyecto
Nikte es un proyecto de reconocimiento de flores que utiliza una arquitectura serverless en AWS para procesar imágenes enviadas por los usuarios y devolver resultados en tiempo casi real. El objetivo fue diseñar una solución escalable, sin administración de servidores, y que integrara servicios de inteligencia artificial.
Objetivo
- Permitir que un usuario envÃe una imagen de una flor.
- Analizar la imagen automáticamente usando IA.
- Almacenar tanto la imagen original como los resultados del análisis.
- Responder de forma rápida y escalable.
Arquitectura general
- La solución se construyó usando los siguientes servicios:
- Amazon S3 – Almacenamiento de imágenes.
- AWS Lambda – Orquestación y procesamiento serverless.
- Amazon Rekognition – Análisis de imágenes (visión por computadora).
- Amazon DynamoDB – Almacenamiento de resultados y metadatos.
- Meta Webhooks (WhatsApp) – Entrada de imágenes desde el usuario.
- Flask – Servidor intermediario para manejar webhooks y lógica inicial.
Flujo del sistema
- El usuario envÃa una imagen de una flor por WhatsApp.
- El webhook de Meta recibe el evento y lo envÃa al servidor Flask (gronk).
- Flask sube la imagen a un bucket de Amazon S3.
- La carga en S3 dispara una función AWS Lambda.
- Lambda envÃa la imagen a Amazon Rekognition usando DetectLabels.
- Rekognition devuelve etiquetas y niveles de confianza.
- Lambda guarda los resultados en Amazon DynamoDB.
- El sistema responde al usuario con el nombre de la flor identificada.
Uso de Amazon Rekognition
- Amazon Rekognition fue el componente central de inteligencia artificial del proyecto.
- Se utilizó la operación DetectLabels para identificar objetos presentes en la imagen.
- Rekognition devuelve un conjunto de etiquetas con porcentajes de confianza.
- El sistema filtra las etiquetas relacionadas con flores y selecciona la más relevante.
Ejemplo de respuesta procesada:
`{
"label": "Rose",
"confidence": 97.2
}`
Rekognition permitió evitar el entrenamiento de un modelo propio, reduciendo complejidad y tiempo de desarrollo.
Uso de Amazon S3
- Las imágenes se almacenan como objetos en un bucket S3.
- Los archivos pueden:
- Ser visualizados desde la consola.
- Ser descargados directamente si es necesario.
- S3 actúa como fuente de entrada para Rekognition y como respaldo de las imágenes originales.
Decisión técnica:
S3 fue elegido porque está optimizado para almacenamiento de objetos grandes, algo que no es eficiente en bases de datos.
Uso de Amazon DynamoDB
- DynamoDB se utilizó para almacenar información estructurada:
- ID de la imagen
- Flor identificada
- Nivel de confianza
- Fecha y usuario
- Permite consultas en milisegundos y escalado automático.
Ejemplo de registro:
{
"image_id": "rosa.jpg",
"flower": "Rosa Roja",
"confidence": 0.97,
"timestamp": "2025-09-15T15:30:00Z"
}
Ventaja clave:
La baja latencia de DynamoDB permite mostrar historiales y resultados sin reprocesar imágenes.
Diferencia clave entre S3 y DynamoDB
- S3 → almacenamiento de objetos (imágenes).
- DynamoDB → almacenamiento de datos estructurados (resultados). Ambos servicios se complementan y cumplen roles distintos dentro de la arquitectura.
Conclusión
Nikte demuestra cómo una arquitectura serverless puede integrar almacenamiento, procesamiento y análisis de imágenes de forma eficiente:
- S3 maneja los archivos.
- Rekognition aporta inteligencia artificial.
- Lambda automatiza el flujo.
- DynamoDB permite respuestas rápidas.
- Webhooks de Meta conectan el sistema con usuarios reales.
Este proyecto fue una experiencia práctica para entender cómo elegir el servicio correcto según el tipo de dato y la necesidad del sistema.
Te comparto el diagrama de flujo

Top comments (0)