DynamoDB BatchWriteItem dengan AWS CLI

aws dynamodb batch-write-item menaruh atau menghapus hingga 25 item dalam satu perintah (total 16 MB, 400 KB per item). Penulisannya masuk ke --request-items sebagai map dari tabel → entri PutRequest/DeleteRequest dalam DynamoDB JSON — dan Anda harus memeriksa UnprocessedItems di output, karena batch secara keseluruhan tidak bersifat atomik.

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

Ketika semuanya berhasil masuk, map sisa di output kosong:

{
    "UnprocessedItems": {}
}

Penjelasan

  • --request-items — map dari nama tabel → array hingga 25 entri PutRequest/DeleteRequest (satu perintah bisa mencakup beberapa tabel). Setiap PutRequest.Item membutuhkan primary key lengkap; setiap DeleteRequest.Key hanyalah key-nya. Nilai berupa DynamoDB JSON — angka adalah string di bawah N.
  • Bukan transaksi — setiap put/delete bersifat atomik secara individual, tetapi batch secara keseluruhan tidak. Butuh all-or-nothing? Gunakan transact-write-items.
  • UnprocessedItems — CLI tidak otomatis mencoba ulang batch parsial. Jika map-nya tidak kosong (throttling adalah penyebab yang biasa), jalankan ulang perintah dengan map persis itu sebagai --request-items — ia sudah dalam bentuk yang benar — dengan backoff di antara percobaan.
  • Tanpa update, tanpa kondisibatch-write-item tidak bisa mengekspresikan update-item, --condition-expression, atau --return-values; sebuah put pada key yang sudah ada diam-diam menggantikan seluruh item. Key duplikat, put+delete pada item yang sama, >25 request, item >400 KB, atau total >16 MB masing-masing menyebabkan DynamoDB menolak seluruh batch.
  • Tip: simpan map di sebuah file dan lewatkan --request-items file://writes.json — mengutip-shell 25 item inline itu menyiksa.

Lakukan secara visual

Menulis DynamoDB JSON bersarang dengan tangan di dalam tanda kutip shell rawan kesalahan. DynamoDB Expression Builder membangun map nilai bertipe dan menyalin perintah CLI yang siap dijalankan, dan kalkulator ukuran item memeriksa setiap item terhadap batas 400 KB.

Untuk menambah, mengedit, dan menghapus item secara massal dalam GUI — impor CSV/JSON alih-alih escaping JSON — unduh DynoTable.

Contoh terkait

References

Terakhir diverifikasi 2026-07-13 terhadap dokumentasi resmi AWS yang ditautkan di atas.

Bekerja dengan DynamoDB tanpa Console

DynoTable adalah klien desktop yang cepat untuk DynamoDB — jelajahi tabel, jalankan query gaya SQL, dan edit Item secara lokal.