Eseguire DynamoDB Local con Docker
DynamoDB Local è il vero motore DynamoDB in un singolo processo — nessun account AWS, nessuna rete, nessuna bolletta per richiesta. Usalo per lo sviluppo locale e i test di integrazione, poi punta lo stesso codice al cloud in produzione.
Avvia il container
docker run -p 8000:8000 amazon/dynamodb-localQuesto espone il motore su http://localhost:8000.
docker-compose
La maggior parte dei progetti lo fissa in docker-compose.yml così tutto il team ottiene lo stesso
endpoint:
services:
dynamodb:
image: amazon/dynamodb-local
command: '-jar DynamoDBLocal.jar -sharedDb -dbPath /data'
ports:
- '8000:8000'
volumes:
- dynamodb-data:/data
volumes:
dynamodb-data:Persistenza
Per impostazione predefinita DynamoDB Local è in memoria — ogni tabella scompare quando il container si ferma. Due flag lo rendono durevole:
-sharedDbmantiene tutti i client su un unico database condiviso (senza, ogni insieme di credenziali/regione ottiene il proprio DB isolato — una sorpresa comune del tipo "dov'è finita la mia tabella?").-dbPath /data+ un volume montato scrive quel file su disco, così i dati sopravvivono adocker compose down.
Punta l'SDK su di esso
Cambia solo l'endpoint — le credenziali possono essere valori fittizi qualsiasi:
import {DynamoDBClient} from '@aws-sdk/client-dynamodb';
const client = new DynamoDBClient({
endpoint: 'http://localhost:8000',
region: 'local',
credentials: {accessKeyId: 'x', secretAccessKey: 'x'}
});Crea una tabella
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_REQUESTUno schema single-table PK/SK come questo è un buon
default. Quando carichi le fixture, converti il JSON semplice nel formato wire con il
convertitore DynamoDB-JSON.
Verifica che il container sia attivo e che la tabella sia stata creata:
aws dynamodb list-tables --endpoint-url http://localhost:8000Sfoglialo con una GUI
Le chiamate da CLI diventano presto noiose. Le opzioni più comuni sono la web UI open-source dynamodb-admin
o un client desktop. DynoTable si collega direttamente a
localhost:8000 (o a qualsiasi endpoint LocalStack — vedi
connettersi a DynamoDB Local e LocalStack)
e ti permette di sfogliare, interrogare con il Workbench SQL e modificare le tabelle locali con la
stessa UI che usi per le tabelle cloud — senza i round-trip della CLI aws.