Rodando o DynamoDB Local com Docker
O DynamoDB Local é o mesmo mecanismo do DynamoDB em um único processo — sem conta AWS, sem rede, sem cobrança por requisição. Use-o para desenvolvimento local e testes de integração e depois aponte o mesmo código para a nuvem em produção.
Inicie o contêiner
docker run -p 8000:8000 amazon/dynamodb-localIsso expõe o mecanismo em http://localhost:8000.
docker-compose
A maioria dos projetos o fixa em docker-compose.yml para que toda a equipe tenha o mesmo
endpoint:
services:
dynamodb:
image: amazon/dynamodb-local
command: '-jar DynamoDBLocal.jar -sharedDb -dbPath /data'
ports:
- '8000:8000'
volumes:
- dynamodb-data:/data
volumes:
dynamodb-data:Persistência
Por padrão, o DynamoDB Local é em memória — toda tabela some quando o contêiner para. Dois flags o tornam durável:
-sharedDbmantém todos os clientes em um único banco de dados compartilhado (sem ele, cada conjunto de credenciais/região recebe seu próprio banco isolado — uma surpresa comum do tipo "onde foi parar minha tabela?").-dbPath /data+ um volume montado grava esse arquivo em disco, então os dados sobrevivem aodocker compose down.
Aponte o SDK para ele
Apenas o endpoint muda — as credenciais podem ser quaisquer valores fictícios:
import {DynamoDBClient} from '@aws-sdk/client-dynamodb';
const client = new DynamoDBClient({
endpoint: 'http://localhost:8000',
region: 'local',
credentials: {accessKeyId: 'x', secretAccessKey: 'x'}
});Crie uma tabela
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_REQUESTUm schema PK/SK de tabela única como este é um bom
padrão. Quando você carregar fixtures, converta JSON puro para o formato de transporte com o
conversor de DynamoDB-JSON.
Verifique se o contêiner está no ar e se a tabela foi criada:
aws dynamodb list-tables --endpoint-url http://localhost:8000Navegue com uma GUI
As chamadas pelo CLI ficam tediosas rápido. As opções de sempre são a interface web open-source
dynamodb-admin ou um cliente desktop. O DynoTable conecta direto a
localhost:8000 (ou a qualquer endpoint do LocalStack — veja
conectar ao DynamoDB Local e LocalStack)
e permite navegar, consultar com o SQL Workbench e editar tabelas locais com a
mesma interface que você usa para tabelas na nuvem — sem idas e voltas ao CLI aws.