DynamoDB BatchGetItem mit der AWS CLI

aws dynamodb batch-get-item holt in einem einzigen Befehl bis zu 100 Items über ihren Primärschlüssel (maximal 16 MB). Die Schlüssel stehen in --request-items als eine Zuordnung von Tabelle → Schlüssel in DynamoDB JSON — und du musst UnprocessedKeys in der Ausgabe prüfen, denn ein Batch darf legitim nur einen Teil des Angeforderten zurückgeben.

Code

aws dynamodb batch-get-item \
  --request-items '{
    "Music": {
      "Keys": [
        {"Artist": {"S": "Arturo Sandoval"}, "SongTitle": {"S": "Cubano Chant"}},
        {"Artist": {"S": "Arturo Sandoval"}, "SongTitle": {"S": "A Mis Abuelos"}},
        {"Artist": {"S": "Ella Fitzgerald"}, "SongTitle": {"S": "Misty"}}
      ]
    }
  }'

Die Ausgabe ordnet jeder Tabelle die gefundenen Items zu, plus etwaige Überbleibsel:

{
    "Responses": {
        "Music": [
            {"Artist": {"S": "Arturo Sandoval"}, "SongTitle": {"S": "Cubano Chant"}, ...}
        ]
    },
    "UnprocessedKeys": {}
}

Erklärung

  • --request-items — eine Zuordnung von Tabellenname → {"Keys": [...]}; ein Befehl kann sich über mehrere Tabellen erstrecken. Jeder Schlüssel muss der vollständige Primärschlüssel sein (Partition + Sortierung bei einem zusammengesetzten Schlüssel). Mehr als 100 Schlüssel, oder derselbe Schlüssel doppelt, scheitert mit einer ValidationException.
  • Responses — Items kommen in keiner bestimmten Reihenfolge zurück, und Schlüssel, die nicht existieren, tauchen einfach nicht auf — ordne Ergebnisse ihren Anfragen anhand ihrer Schlüsselattribute zu.
  • UnprocessedKeys — anders als query/scan wiederholt die CLI einen partiellen Batch nicht automatisch (es ist kein Pagination-Token). Ist die Zuordnung nicht leer — Throttling, eine Antwort über 16 MB — führe den Befehl mit genau dieser Zuordnung als --request-items erneut aus (sie liegt bereits in der richtigen Form vor) und warte zwischen den Versuchen mit Backoff.
  • Pro Tabelle kannst du "ProjectionExpression": "..." (mit "ExpressionAttributeNames") hinzufügen, um nur einige Attribute zu holen, sowie "ConsistentRead": true für stark konsistente Reads — Batch-Reads sind standardmäßig letztendlich konsistent.
  • Tipp: Bei mehr als ein paar Schlüsseln lege die Zuordnung in einer Datei ab und übergib --request-items file://keys.json.

Visuell erledigen

Verschachteltes DynamoDB JSON von Hand in Shell-Anführungszeichen zu schreiben ist fehleranfällig. Der DynamoDB Expression Builder baut typisierte Schlüssel-/Wert-Zuordnungen und kopiert lauffertige CLI-Befehle.

Um Items tabellenübergreifend in einer GUI zu holen und zu inspizieren — kein JSON-Escaping, keine Wiederholungs-Buchhaltung — lade DynoTable herunter.

Verwandte Beispiele

References

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

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.