Alle Items aus DynamoDB in Node.js holen (AWS SDK v3)

Es gibt kein "select all" in DynamoDB — eine ganze Tabelle zu lesen bedeutet einen Scan, den du bis zum Ende paginierst. Jede Antwort trägt höchstens 1 MB; du schleifst und speist LastEvaluatedKey als ExclusiveStartKey zurück, bis kein Schlüssel mehr zurückkommt.

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`);

Erklärung

  • Die Schleife ist der Punkt — ein einzelner Scan-Aufruf gibt NICHT die Tabelle zurück; er gibt bis zu 1 MB zurück. Nach der ersten Antwort aufzuhören ist der klassische "meinem Scan fehlen Items"-Bug. Nur ein fehlender LastEvaluatedKey bedeutet, dass du alles gelesen hast.
  • Speicheritems hält die gesamte Tabelle. Verarbeite bei großen Tabellen jede Seite innerhalb der Schleife (in eine Datei schreiben, streamen, aggregieren), statt anzusammeln.
  • Schneller bei großen Tabellen: Parallel Scan — teile die Arbeit mit Segment / TotalSegments auf: Führe N Worker aus, jeder scannt sein eigenes Segment mit seiner eigenen Pagination-Schleife. Gleiche Gesamtkosten, deutlich geringere Wanduhrzeit.
  • Kosten — ein vollständiger Scan liest (und berechnet) jedes Byte jedes Items, jedes Mal, wenn du ihn ausführst. Trimme die Antwort mit ProjectionExpression (weniger zurückgegebene Attribute — die Lesekosten bleiben gleich), und setze keinen Scan auf einen Hot Path; dafür sind Query und Zugriffsmuster-Design da.
  • Gleich mitfiltern? Eine FilterExpression verwirft Items nachdem sie gelesen (und berechnet) wurden — siehe Scan mit einem Filter.

Visuell erledigen

Eine Tabelle zu überfliegen braucht kein Skript: Lade DynoTable herunter, um jede Tabelle in einem paginierten Raster zu durchsuchen — es blättert die Scans für dich durch, keine Schleife, die man falsch machen kann. Und bevor du scannst und zahlst, zeigt der DynamoDB-Preisrechner, was ein vollständiges Lesen deiner Tabelle tatsächlich kostet.

Verwandte Beispiele

References

Zuletzt verifiziert am 2026-07-13 gegen die oben verlinkte offizielle AWS-Dokumentation.

Diesen Request visuell bauen

Stelle diese Operation im kostenlosen DynamoDB Query Builder zusammen — Key-Bedingung, Filter, Index, Limit, Sortierreihenfolge und eine Paginierungsschleife — und kopiere sie als lauffähiges SDK-v3-, CLI- oder boto3-Programm zurück.

DynamoDB Query Builder öffnen

Mit DynamoDB ohne die Console arbeiten

DynoTable ist ein schneller Desktop-Client für DynamoDB — durchsuche Tabellen, führe SQL-artige Queries aus und bearbeite Items lokal.