AWS SDK con DynamoDB y DocumentClient
¿Qué es aws-sdk
?
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étodo | Descripción |
---|---|
put | Inserta un nuevo elemento |
get | Recupera un ítem por su clave |
update | Modifica un ítem existente |
delete | Elimina un ítem por su clave |
scan | Recupera todos los ítems de una tabla |
query | Consulta 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.