Débutant2 min de lecture

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-local

Cela 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 :

  • -sharedDb garde 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_REQUEST

Un 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:8000

Le 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.

Mis à jour