DynamoDB BatchWriteItem con la AWS CLI

aws dynamodb batch-write-item inserisce o elimina fino a 25 Item in un solo comando (16 MB totali, 400 KB per Item). Le scritture vanno in --request-items come mappa tabella → voci PutRequest/DeleteRequest in DynamoDB JSON — e devi controllare UnprocessedItems nell'output, perché il batch nel suo complesso non è atomico.

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"}}}}
    ]
  }'

Quando tutto va a buon fine, la mappa dei resti nell'output è vuota:

{
    "UnprocessedItems": {}
}

Spiegazione

  • --request-items — una mappa nome tabella → un array di massimo 25 voci PutRequest/DeleteRequest (un singolo comando può interessare più tabelle). Ogni PutRequest.Item richiede la chiave primaria completa; ogni DeleteRequest.Key è solo la chiave. I valori sono in DynamoDB JSON — i numeri sono stringhe sotto N.
  • Non è una transazione — ogni put/delete è atomica individualmente, ma il batch nel suo complesso no. Ti serve il tutto-o-niente? Usa transact-write-items.
  • UnprocessedItems — la CLI non riprova automaticamente un batch parziale. Se la mappa non è vuota (il throttling è la causa abituale), riesegui il comando con quella stessa mappa come --request-items — è già nel formato giusto — applicando un backoff tra i tentativi.
  • Niente aggiornamenti, niente condizionibatch-write-item non può esprimere update-item, --condition-expression o --return-values; un put su una chiave esistente sostituisce silenziosamente l'intero Item. Chiavi duplicate, put+delete sullo stesso Item, >25 richieste, un Item >400 KB, o >16 MB totali fanno sì che DynamoDB rifiuti l'intero batch.
  • Suggerimento: tieni la mappa in un file e passa --request-items file://writes.json — mettere tra virgolette 25 Item inline nella shell è un incubo.

Fallo visivamente

Scrivere a mano DynamoDB JSON annidato tra le virgolette della shell è soggetto a errori. Il DynamoDB Expression Builder costruisce mappe di valori tipizzate e copia comandi CLI pronti da eseguire, e il calcolatore delle dimensioni degli Item verifica ogni Item rispetto al limite di 400 KB.

Per aggiungere, modificare ed eliminare Item in blocco in una GUI — import CSV/JSON invece dell'escape di JSON — scarica DynoTable.

Esempi correlati

References

Ultima verifica 2026-07-13 rispetto alla documentazione ufficiale AWS collegata sopra.

Lavora con DynamoDB senza la Console

DynoTable è un client desktop veloce per DynamoDB — sfoglia le tabelle, esegui query in stile SQL e modifica gli Item localmente.