AWS SDK con DynamoDB y DocumentClient

AWS SDK con DynamoDB y DocumentClient

¿Qué es aws-sdk?

AWS DynamoDB, AWS SDK, and Node.js for Back-end Development | by Abdullah  Muhammad | Stackademic

El módulo aws-sdk es el paquete oficial de Amazon Web Services para interactuar con los servicios de AWS desde aplicaciones Node.js. Incluye soporte para servicios como S3, Lambda, DynamoDB, EC2, entre otros.

Cuando trabajamos con DynamoDB, se usa junto con DocumentClient, que simplifica el manejo de datos estructurados sin preocuparse por la conversión de tipos nativos de JavaScript a los formatos requeridos por AWS.

¿Por qué usar aws-sdk con DynamoDB?

  • Permite manejar operaciones directamente desde código sin usar consola web.

  • Facilita la automatización y pruebas de tus servicios backend.

  • Con DocumentClient, la manipulación de datos es más intuitiva.

  • Se puede integrar fácilmente con apps serverless, Express, o cualquier entorno Node.js.

Autenticación: aws configure

Antes de usar el código, asegúrate de haber configurado las credenciales de AWS ejecutando:

				
					aws configure

				
			

Esto guarda tus claves de acceso en ~/.aws/credentials, evitando tener que codificarlas directamente en tus scripts.

Estructura del CRUD con DocumentClient

Vamos a construir una app básica de tareas (To-Do App) con operaciones CRUD:

				
					task-app/
├── createTask.js
├── readTask.js
├── updateTask.js
├── deleteTask.js
└── dynamoClient.js
				
			

Archivo base: dynamoClient.js

				
					// dynamoClient.js
const AWS = require('aws-sdk');

// Configura la región si no se hizo en aws configure
AWS.config.update({ region: 'us-east-1' });

const dynamoDB = new AWS.DynamoDB.DocumentClient();

module.exports = dynamoDB;

				
			

Crear tarea: createTask.js

				
					// createTask.js
const dynamoDB = require('./dynamoClient');

const createTask = async () => {
  const params = {
    TableName: 'Tasks',
    Item: {
      id: 'task-001',
      title: 'Terminar post de aws-sdk',
      completed: false
    }
  };

  try {
    await dynamoDB.put(params).promise();
    console.log('Tarea creada con éxito');
  } catch (error) {
    console.error('Error al crear la tarea:', error);
  }
};

createTask();
				
			

Leer tarea: readTask.js

				
					// readTask.js
const dynamoDB = require('./dynamoClient');

const readTask = async () => {
  const params = {
    TableName: 'Tasks',
    Key: {
      id: 'task-001'
    }
  };

  try {
    const result = await dynamoDB.get(params).promise();
    console.log('📄 Tarea leída:', result.Item);
  } catch (error) {
    console.error('Error al leer la tarea:', error);
  }
};

readTask();

				
			

Actualizar tarea: updateTask.js

				
					// updateTask.js
const dynamoDB = require('./dynamoClient');

const updateTask = async () => {
  const params = {
    TableName: 'Tasks',
    Key: { id: 'task-001' },
    UpdateExpression: 'set completed = :c',
    ExpressionAttributeValues: {
      ':c': true
    },
    ReturnValues: 'UPDATED_NEW'
  };

  try {
    const result = await dynamoDB.update(params).promise();
    console.log('🛠 Tarea actualizada:', result);
  } catch (error) {
    console.error('Error al actualizar la tarea:', error);
  }
};

updateTask();

				
			

Eliminar tarea: deleteTask.js

				
					// deleteTask.js
const dynamoDB = require('./dynamoClient');

const deleteTask = async () => {
  const params = {
    TableName: 'Tasks',
    Key: {
      id: 'task-001'
    }
  };

  try {
    await dynamoDB.delete(params).promise();
    console.log('🗑 Tarea eliminada con éxito');
  } catch (error) {
    console.error('Error al eliminar la tarea:', error);
  }
};

deleteTask();

				
			

Métodos principales de DocumentClient

MétodoDescripción
putInserta un nuevo elemento
getRecupera un ítem por su clave
updateModifica un ítem existente
deleteElimina un ítem por su clave
scanRecupera todos los ítems de una tabla
queryConsulta por clave secundaria

Caso de uso real

Este enfoque es ideal para aplicaciones serverless (por ejemplo, con AWS Lambda + API Gateway), paneles de administración de tareas, dashboards de proyectos o incluso sistemas internos de soporte técnico.

Con el módulo aws-sdk puedes fácilmente escalar la lógica y desplegarla en AWS usando herramientas como Serverless Framework.

Referencias útiles

Facebook
X
LinkedIn
Reddit
Pinterest
Threads

Post relacionados

Post recientes

Search