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 25PutRequest/DeleteRequest-Einträgen (ein Befehl kann sich über mehrere Tabellen erstrecken). JedesPutRequest.Itembraucht den vollständigen Primärschlüssel; jederDeleteRequest.Keyist nur der Schlüssel. Werte sind DynamoDB JSON — Zahlen sind Strings unterN.- 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-itemserneut aus — sie liegt bereits in der richtigen Form vor — und warte zwischen den Versuchen mit Backoff.- Keine Updates, keine Bedingungen —
batch-write-itemkann keinupdate-item, keine--condition-expressionund keine--return-valuesausdrü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
- DynamoDB BatchWriteItem in Node.js — derselbe Batch-Write mit AWS SDK v3.
- DynamoDB Batch-Write in Python — boto3s
batch_writer()übernimmt die Retry-Schleife für dich. - DynamoDB PutItem mit der AWS CLI — der Einzel-Item-Write, den dies bündelt.
- Batch-Operationen in DynamoDB — Limits, Teilfehler und wann sich Batching lohnt.
- "Too many items requested for the BatchWriteItem call" — mehr als 25 Put/Delete-Anfragen in einem Batch.
- "Provided list of item keys contains duplicates" — zwei Anfragen, die denselben Schlüssel in einem Batch berühren.
References
- BatchWriteItem — Amazon DynamoDB API Reference
- batch-write-item — AWS CLI Command Reference
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
Zuletzt verifiziert am 2026-07-13 gegen die oben verlinkte offizielle AWS-Dokumentation.