DynamoDB BatchWriteItem mit der AWS CLI

aws dynamodb batch-write-item legt in einem einzigen Befehl bis zu 25 Items an oder löscht sie (16 MB gesamt, 400 KB pro Item). Die Schreibvorgänge stehen in --request-items als eine Zuordnung von Tabelle → PutRequest/DeleteRequest-Einträge in DynamoDB JSON — und du musst UnprocessedItems in der Ausgabe prüfen, denn der Batch als Ganzes ist nicht atomar.

Code

aws dynamodb batch-write-item \
  --request-items '{
    "Music": [
      {"PutRequest": {"Item": {"Artist": {"S": "Arturo Sandoval"}, "SongTitle": {"S": "Cubano Chant"}, "AlbumTitle": {"S": "Danzon"}, "Year": {"N": "1994"}}}},
      {"PutRequest": {"Item": {"Artist": {"S": "Arturo Sandoval"}, "SongTitle": {"S": "A Mis Abuelos"}, "AlbumTitle": {"S": "Danzon"}, "Year": {"N": "1994"}}}},
      {"DeleteRequest": {"Key": {"Artist": {"S": "Ella Fitzgerald"}, "SongTitle": {"S": "Misty"}}}}
    ]
  }'

Wenn alles ankommt, ist die Überbleibsel-Zuordnung der Ausgabe leer:

{
    "UnprocessedItems": {}
}

Erklärung

  • --request-items — eine Zuordnung von Tabellenname → ein Array aus bis zu 25 PutRequest/DeleteRequest-Einträgen (ein Befehl kann sich über mehrere Tabellen erstrecken). Jedes PutRequest.Item braucht den vollständigen Primärschlüssel; jeder DeleteRequest.Key ist nur der Schlüssel. Werte sind DynamoDB JSON — Zahlen sind Strings unter N.
  • Keine Transaktion — jeder Put/Delete ist einzeln atomar, aber der Batch als Ganzes nicht. Brauchst du Alles-oder-nichts? Nutze transact-write-items.
  • UnprocessedItems — die CLI wiederholt einen partiellen Batch nicht automatisch. Ist die Zuordnung nicht leer (Throttling ist die übliche Ursache), 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.
  • Keine Updates, keine Bedingungenbatch-write-item kann kein update-item, keine --condition-expression und keine --return-values ausdrücken; ein Put auf einen existierenden Schlüssel ersetzt stillschweigend das gesamte Item. Doppelte Schlüssel, Put+Delete auf demselben Item, mehr als 25 Anfragen, ein Item über 400 KB, oder über 16 MB gesamt lassen DynamoDB jeweils den gesamten Batch ablehnen.
  • Tipp: Lege die Zuordnung in einer Datei ab und übergib --request-items file://writes.json — 25 Items inline in Shell-Anführungszeichen zu setzen ist eine Qual.

Visuell erledigen

Verschachteltes DynamoDB JSON von Hand in Shell-Anführungszeichen zu schreiben ist fehleranfällig. Der DynamoDB Expression Builder baut typisierte Wertzuordnungen und kopiert lauffertige CLI-Befehle, und der Item-Size-Rechner prüft jedes Item gegen die 400-KB-Grenze.

Um Items in großen Mengen in einer GUI hinzuzufügen, zu bearbeiten und zu löschen — CSV-/JSON-Import statt JSON-Escaping — 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.