Ejecutar DynamoDB Local con Docker
DynamoDB Local es el motor real de DynamoDB en un solo proceso —sin cuenta de AWS, sin red, sin factura por solicitud. Úsalo para desarrollo local y pruebas de integración, y luego apunta el mismo código a la nube en producción.
Arranca el contenedor
docker run -p 8000:8000 amazon/dynamodb-localEso expone el motor en http://localhost:8000.
docker-compose
La mayoría de los proyectos lo fijan en docker-compose.yml para que todo el
equipo obtenga el mismo endpoint:
services:
dynamodb:
image: amazon/dynamodb-local
command: '-jar DynamoDBLocal.jar -sharedDb -dbPath /data'
ports:
- '8000:8000'
volumes:
- dynamodb-data:/data
volumes:
dynamodb-data:Persistencia
Por defecto, DynamoDB Local está en memoria —cada tabla desaparece cuando se detiene el contenedor. Dos flags lo hacen duradero:
-sharedDbmantiene a todos los clientes en una única base de datos compartida (sin él, cada conjunto de credenciales/región obtiene su propia base de datos aislada —una sorpresa habitual del estilo «¿dónde se fue mi tabla?»).-dbPath /data+ un volumen montado escribe ese archivo en disco, así que los datos sobreviven adocker compose down.
Apunta el SDK hacia él
Solo cambia el endpoint —las credenciales pueden ser cualquier valor ficticio:
import {DynamoDBClient} from '@aws-sdk/client-dynamodb';
const client = new DynamoDBClient({
endpoint: 'http://localhost:8000',
region: 'local',
credentials: {accessKeyId: 'x', secretAccessKey: 'x'}
});Crea una tabla
aws dynamodb create-table \
--endpoint-url http://localhost:8000 \
--table-name AppData \
--attribute-definitions AttributeName=PK,AttributeType=S AttributeName=SK,AttributeType=S \
--key-schema AttributeName=PK,KeyType=HASH AttributeName=SK,KeyType=RANGE \
--billing-mode PAY_PER_REQUESTUn schema PK/SK de tabla única como este es un
buen valor por defecto. Cuando cargues fixtures, convierte el JSON plano al formato
de transporte con el conversor de DynamoDB-JSON.
Verifica que el contenedor está en marcha y que la tabla se creó:
aws dynamodb list-tables --endpoint-url http://localhost:8000Explórala con una GUI
Las llamadas por CLI se vuelven tediosas rápido. Las opciones habituales son la
interfaz web de código abierto dynamodb-admin o un cliente de escritorio.
DynoTable se conecta directamente a localhost:8000 (o a cualquier
endpoint de LocalStack —consulta
conectar a DynamoDB Local y LocalStack)
y te permite explorar, consultar con el SQL Workbench y editar tablas locales con
la misma interfaz que usas para las tablas en la nube —sin idas y vueltas por la
CLI de aws.