DynamoDB Local mit Docker ausführen
DynamoDB Local ist die echte DynamoDB-Engine in einem einzigen Prozess — kein AWS-Konto, kein Netzwerk, keine Rechnung pro Request. Nutze es für die lokale Entwicklung und Integrationstests, und zeige denselben Code in der Produktion dann auf die Cloud.
Den Container starten
docker run -p 8000:8000 amazon/dynamodb-localDas stellt die Engine unter http://localhost:8000 bereit.
docker-compose
Die meisten Projekte fixieren es in der docker-compose.yml, damit das ganze Team
denselben Endpoint bekommt:
services:
dynamodb:
image: amazon/dynamodb-local
command: '-jar DynamoDBLocal.jar -sharedDb -dbPath /data'
ports:
- '8000:8000'
volumes:
- dynamodb-data:/data
volumes:
dynamodb-data:Persistenz
Standardmäßig ist DynamoDB Local im Speicher — jede Tabelle verschwindet, wenn der Container stoppt. Zwei Flags machen es dauerhaft:
-sharedDbhält alle Clients auf einer geteilten Datenbankdatei (ohne es bekommt jeder Satz Credentials/Region seine eigene isolierte DB — eine häufige „Wo ist meine Tabelle hin?“-Überraschung).-dbPath /data+ ein gemountetes Volume schreibt diese Datei auf die Festplatte, sodass die Daten eindocker compose downüberleben.
Das SDK darauf zeigen
Nur der Endpoint ändert sich — Credentials können beliebige Dummy-Werte sein:
import {DynamoDBClient} from '@aws-sdk/client-dynamodb';
const client = new DynamoDBClient({
endpoint: 'http://localhost:8000',
region: 'local',
credentials: {accessKeyId: 'x', secretAccessKey: 'x'}
});Eine Tabelle anlegen
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_REQUESTEin Single-Table-PK/SK-Schema wie dieses ist ein
guter Standard. Wenn du Fixtures lädst, konvertiere reines JSON mit dem
DynamoDB-JSON-Konverter ins Wire-Format.
Prüfe, ob der Container läuft und die Tabelle gelandet ist:
aws dynamodb list-tables --endpoint-url http://localhost:8000Mit einer GUI durchsuchen
CLI-Aufrufe werden schnell mühsam. Die üblichen Optionen sind die quelloffene
dynamodb-admin-Web-UI oder ein Desktop-Client. DynoTable verbindet sich
direkt mit localhost:8000 (oder jedem LocalStack-Endpoint — siehe
Verbindung zu DynamoDB Local & LocalStack)
und lässt dich lokale Tabellen mit derselben UI durchsuchen, mit der SQL Workbench
abfragen und bearbeiten, die du für Cloud-Tabellen nutzt — ohne aws-CLI-Umwege.