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 entriPutRequest/DeleteRequest(satu perintah bisa mencakup beberapa tabel). SetiapPutRequest.Itemmembutuhkan primary key lengkap; setiapDeleteRequest.Keyhanyalah key-nya. Nilai berupa DynamoDB JSON — angka adalah string di bawahN.- 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 kondisi —
batch-write-itemtidak bisa mengekspresikanupdate-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
- DynamoDB BatchWriteItem di Node.js — penulisan batch yang sama dengan AWS SDK v3.
- Penulisan batch DynamoDB di Python —
batch_writer()boto3 melakukan loop retry untuk Anda. - DynamoDB PutItem dengan AWS CLI — penulisan satu item yang ini batch-kan.
- Operasi batch di DynamoDB — batas, kegagalan parsial, dan kapan batching sepadan.
- "Too many items requested for the BatchWriteItem call" — lebih dari 25 request put/delete dalam satu batch.
- "Provided list of item keys contains duplicates" — dua request menyentuh key yang sama dalam satu batch.
References
- BatchWriteItem — Amazon DynamoDB API Reference
- batch-write-item — AWS CLI Command Reference
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
Terakhir diverifikasi 2026-07-13 terhadap dokumentasi resmi AWS yang ditautkan di atas.