Inserción de Usuarios en DynamoDB con Funciones Lambda
Clase 15 de 25 • Curso de Serverless Framework en AWS
Resumen
¿Cómo insertar usuarios a la base de datos Dynamo usando funciones Lambda?
Insertar usuarios en una base de datos Dynamo usando funciones Lambda es un paso esencial para cualquier proyecto que busque manejar datos eficientemente en la nube. Aunque la tarea generalmente comienza con una persona, el ciclo de vida del desarrollo software puede resultar en diferentes manos trabajando y mejorando el código. A continuación, te mostramos cómo navegar por este proceso de manera exitosa.
¿Cómo refactorizar la estructura del proyecto?
Para manejar múltiples funcionalidades como crear, actualizar y borrar datos, es recomendable modularizar el proyecto.
- Organización del código: Se sugiere crear carpetas separadas para cada funcionalidad, por ejemplo,
createUsers
,getUsers
, etc., lo que ayuda a mantener el código organizado y fácil de manejar. - Servidor y funcionalidad: Al añadir nuevas funciones Lambda (como
createUsers
), debemos modificar el archivoserverless.yml
para reflejar estos cambios. - Múltiples handlers: Adapte la estructura de carpetas y asegúrese de que cada función tenga su propio handler.
¿Cómo definir una solicitud POST en serverless.yml?
Con las funciones HTTP podemos manejar diferentes tipos de solicitudes. Aquí te mostramos cómo cambiar una solicitud GET a POST:
functions:
createUsers:
handler: createUsers/index.handler
events:
- http:
path: users
method: post
¿Cómo garantizar la inserción correcta en DynamoDB?
Es crucial definir parámetros adecuados al insertar datos en DynamoDB. A continuación, se presentan algunos pasos cruciales para lograrlo:
-
Generar un UUID aleatorio para cada usuario usando la librería
crypto
en Node.js:const { randomUUID } = require('crypto'); const id = randomUUID();
-
Extraer el body del evento con
JSON.parse
para evitar errores de sintaxis:const userBody = JSON.parse(event.body);
-
Vincular el ID generado al objeto
userBody
:userBody.id = id;
-
Ejecutar la operación PUT en lugar de QUERY y devolver el resultado:
await dynamoDb.put({ TableName: 'YourTableName', Item: userBody }).promise();
¿Cómo probar la función Lambda localmente y en la nube?
Utilizar herramientas como Postman es fundamental para probar la creación de usuarios tanto localmente como en la nube.
- Modo local: Usa
serverless offline start
para realizar pruebas sin necesidad de desplegar en la nube. - Uso de Postman: Define una nueva solicitud POST con un body en formato JSON, ajustándolo según el esquema de tu base de datos.
{
"name": "Yagi",
"phone": "1234567890"
}
¿Cómo optimizar el empaquetado con Serverless Framework?
Al utilizar Serverless Framework, asegúrate de no incluir dependencias innecesarias que aumenten el tamaño del paquete.
-
Exclude Patterns: Define patrones de exclusión para carpetas como
node_modules
odynamoDB
local.package: individually: true exclude: - node_modules/** - dynamoDB/**
Siguiendo estos pasos, puedes insertar usuarios eficientemente en una base de datos Dynamo usando funciones Lambda. No olvides compartir tus resultados y seguir experimentando; el aprendizaje no se detiene. ¡Nos vemos en la próxima clase para aprender a realizar un update!