Obtenir tous les éléments de DynamoDB en Node.js (AWS SDK v3)

Il n'y a pas de « select all » dans DynamoDB — lire une table entière signifie un Scan que tu pagines jusqu'au bout. Chaque réponse porte au plus 1 Mo ; tu boucles, en réinjectant LastEvaluatedKey comme ExclusiveStartKey, jusqu'à ce qu'aucune clé ne revienne.

Code

import {DynamoDBClient, ScanCommand} from '@aws-sdk/client-dynamodb';

const client = new DynamoDBClient({region: 'us-east-1'});

const items = [];
let lastEvaluatedKey;

do {
  const response = await client.send(
    new ScanCommand({
      TableName: 'Music',
      ExclusiveStartKey: lastEvaluatedKey
    })
  );

  items.push(...(response.Items ?? []));
  lastEvaluatedKey = response.LastEvaluatedKey;
} while (lastEvaluatedKey);

console.log(`Table holds ${items.length} items`);

Explication

  • La boucle est l'essentiel — un seul appel Scan ne renvoie PAS la table ; il renvoie jusqu'à 1 Mo. S'arrêter après la première réponse est le bug classique « mon scan a des éléments manquants ». Seule une absence de LastEvaluatedKey signifie que tu as tout lu.
  • Mémoireitems contient la table entière. Pour les grandes tables, traite chaque page à l'intérieur de la boucle (écrire dans un fichier, streamer, agréger) au lieu d'accumuler.
  • Plus rapide sur les grandes tables : scan parallèle — répartis le travail avec Segment / TotalSegments : lance N workers, chacun scannant son propre segment avec sa propre boucle de pagination. Même coût total, temps réel bien plus court.
  • Coût — un scan complet lit (et facture) chaque octet de chaque élément, à chaque exécution. Réduis la réponse avec ProjectionExpression (moins d'attributs renvoyés — le coût de lecture reste le même), et ne mets pas un scan sur un chemin critique ; c'est à ça que servent Query et la conception des schémas d'accès.
  • Tu en profites pour filtrer ? Une FilterExpression écarte les éléments après leur lecture (et facturation) — voir Scan avec un filtre.

À faire visuellement

Jeter un œil à une table ne nécessite pas de script : télécharge DynoTable pour parcourir n'importe quelle table dans une grille paginée — il pagine les scans pour toi, aucune boucle à rater. Et avant de scanner-et-payer, le calculateur de tarification DynamoDB montre ce que coûte réellement une lecture complète de ta table.

Exemples liés

References

Dernière vérification le 2026-07-13 par rapport à la documentation officielle AWS liée ci-dessus.

Construis cette requête visuellement

Compose cette opération dans le Générateur de requêtes DynamoDB gratuit — condition de clé, filtre, index, Limit, ordre de tri et boucle de pagination — et copie-la en retour comme programme exécutable SDK v3, CLI ou boto3.

Ouvrir le Générateur de requêtes DynamoDB

Travaille avec DynamoDB sans la Console

DynoTable est un client de bureau rapide pour DynamoDB — parcours les tables, exécute des requêtes de style SQL et édite les items en local.