Exécuter DynamoDB Local avec Docker
DynamoDB Local est le vrai moteur DynamoDB dans un seul processus — pas de compte AWS, pas de réseau, pas de facturation à la requête. Utilise-le pour le développement local et les tests d'intégration, puis pointe le même code vers le cloud en production.
Démarrer le conteneur
docker run -p 8000:8000 amazon/dynamodb-localCela expose le moteur sur http://localhost:8000.
docker-compose
La plupart des projets le figent dans docker-compose.yml pour que toute l'équipe
ait le même endpoint :
services:
dynamodb:
image: amazon/dynamodb-local
command: '-jar DynamoDBLocal.jar -sharedDb -dbPath /data'
ports:
- '8000:8000'
volumes:
- dynamodb-data:/data
volumes:
dynamodb-data:Persistance
Par défaut, DynamoDB Local est en mémoire — chaque table disparaît à l'arrêt du conteneur. Deux flags le rendent durable :
-sharedDbgarde tous les clients sur un même fichier de base de données partagé (sans lui, chaque jeu d'identifiants/région obtient sa propre base isolée — une surprise classique du type « où est passée ma table ? »).-dbPath /data+ un volume monté écrit ce fichier sur le disque, pour que les données survivent àdocker compose down.
Pointer le SDK vers lui
Seul l'endpoint change — les identifiants peuvent être n'importe quelles valeurs factices :
import {DynamoDBClient} from '@aws-sdk/client-dynamodb';
const client = new DynamoDBClient({
endpoint: 'http://localhost:8000',
region: 'local',
credentials: {accessKeyId: 'x', secretAccessKey: 'x'}
});Créer une table
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 single-table PK/SK comme celui-ci est
une bonne valeur par défaut. Quand tu charges des fixtures, convertis le JSON brut
vers le format de transport avec le
convertisseur DynamoDB-JSON.
Vérifie que le conteneur est démarré et que la table a bien été créée :
aws dynamodb list-tables --endpoint-url http://localhost:8000Le parcourir avec une GUI
Les appels CLI deviennent vite fastidieux. Les options habituelles sont l'UI web
open-source dynamodb-admin ou un client de bureau. DynoTable se
connecte directement à localhost:8000 (ou à n'importe quel endpoint LocalStack —
voir se connecter à DynamoDB Local & LocalStack)
et te permet de parcourir, requêter avec le Workbench SQL et éditer les tables
locales avec la même UI que pour les tables cloud — sans allers-retours aws CLI.