DEV Community

Brenda Galicia
Brenda Galicia

Posted on

Desplegar API basada en NodeJS con AWS Lambda y API Gateway conectada a DynamoDB.

En esta ocasión regresamos a lo básico, veremos paso a paso como crear una API que contiene las operaciones CRUD a una base de datos en DynamoDB con AWS Lambda en NodeJS y su despliegue para consumo a través de AWS API Gateway.

💻 Requerimientos

Usuario de consola AWS (con permisos para los servicios que vamos a estar ocupando: DynamoDB, Lambda, API Gateway)

📝 Paso a paso

Paso 1: Creación de la base de datos en DynamoDB.

1.1 Entrar a DynamoDB desde la consola de AWS

1.2 Clic en crear tabla

1.3 Agregar nombre de la tabla, para la demo será: demo_api_dynamodb

1.4 Agregar clave de partición (primary key), para este repositorio será: id, de tipo cadena

1.5 Clic en crear tabla

1.6 Una vez que la tabla este activa, entramos a crear elementos dando clic sobre la tabla

1.7 Clic sobre explorar elementos, seguido de crear elemento

1.8 Añadimos un elemento conformado por:

{
"id": "1",
"email": "abenitez@mail.com",
"name": "Ana Benitez"
}

1.9 Clic en crear elemento

¡Tenemos base de datos con al menos un registro para su consulta!
Paso 2: Creación de la Lambda con NodeJS.

2.1 Entrar a AWS Lambda desde la consola de AWS

2.2 Clic en crear una función

2.3 Seleccionamos Crear desde cero

2.4 Le damos un nombre: demo_api_lambda

2.5 En el valor de tiempo de ejecución seleccionamos: NodeJS 20.x

2.6 En el apartado de Configuración avanzada añadimos el permiso para DynamoDB, damos seleccionamos Creación de un nuevo rol desde la política de AWS Templates

2.7 Agregamos el nombre: demo_api_rol_dynamodb

2.8 Seleccionamos en plantilla de política: Permisos de microservicios sencillos

2.9 Clic en crear función

2.10 Se va a crear la lambda, en la parte ce código, copia y pega el contendio del archivo demo_api_lambda.js, el cual contiene el código en NodeJS con las operaciones CRUD del API

GET /users --> Consulta de todos los usuarios
GET /users/{id} --> Consulta por id del usuario
PUT /users --> Creación/actualización completa de la información del usuario
DELETE /users/{id} --> Eliminación del usuario por su id

2.11 Clic en Deploy

¡Tenemos nuestra función lambda con código NodeJS que se conecta a nuestra base de datos en DynamoDB!

NOTA: si cambiaste el nombre de la tabla, asegúrate de actualizar el código antes de desplegar.

Paso 3: Creación y configuración del API Gateway.

3.1 Entrar a Amazon API Gateway desde la consola de AWS

3.2 Clic en Crear, sobre API HTTP

3.3 Clic sobre Agregar integración, seleccionar lambda y en función lambda, buscar la que acabamos de crear en el paso 2

3.4 Agregar nombre del API: demo_api_gateway

3.5 Clic en siguiente

3.6 Seleccionar el método, ruta y destino por cada recurso que posee nuestra API:

3.8 Agregar nombre de la etapa, en este caso: dev

3.9 Clic en siguiente

3.10 Revisamos el resumen y clic en Crear

¡Listo! Ya tenemos nuestra API lista para ser consumida desde un endpoint que posee el CRUD de usuarios en una base de datos en DynamoDB a través de la implementación de una Lambda con NodeJS.

Paso 4: Pruebas unitarias.

4.1 Podremos regresar a nuestra lambda, en la sección de Configuración, Desencadenadores veremos el endpoint generado (si no lo visualizas, solo refresca la sección)

4.2 Con el endpoint disponible, utiliza tu cliente HTTP de confianza y genera un set de pruebas unitarias para probar cada recurso del API

📚 Repositorio

Código completo en GitHub.

🎬 Demo

Video completo de la demo en YouTube.

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read more

Top comments (0)

Image of Docusign

🛠️ Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more