Terlalu banyak item yang diminta untuk panggilan BatchWriteItem
TL;DR — BatchWriteItem menerima paling banyak 25 tindakan put/delete per panggilan (dan total ≤16 MB). Anda mengirim lebih dari 25, jadi DynamoDB menolak seluruh permintaan. Bagi item Anda menjadi beberapa bagian yang terdiri dari 25 atau kurang dan terbitkan satu BatchWriteItem per bagian.
Apa artinya
ValidationException: 1 validation error detected: Value '<your request>' at 'requestItems' failed to satisfy constraint: Map value must satisfy constraint: [Member must have length less than or equal to 25, Member must have length greater than or equal to 1]
# on DynamoDB Local the same call is rejected with a shorter sentence:
ValidationException: Too many items requested for the BatchWriteItem callBatchWriteItem mengelompokkan tindakan PutRequest/DeleteRequest individual di satu atau beberapa tabel — namun satu panggilan dibatasi pada 25 tindakan dan 16 MB data. Melewati batas mana pun dan DynamoDB menolak seluruh permintaan sebelum menulis apa pun. Ini adalah HTTP 400 ValidationException, sisi klien, dan tidak dapat dicoba ulang sampai Anda mengubah ukuran batch.
Mengapa itu terjadi
- Menulis koleksi besar dalam satu panggilan — meneruskan array yang berisi ratusan item langsung ke
BatchWriteItemtanpa terpotong-potong. - Perulangan potongan dengan batas yang salah — mengelompokkan berdasarkan hitungan tetapi menggunakan batas di atas 25, atau off-by-one yang memungkinkan 26 lolos.
- Menghitung tabel, bukan tindakan — batas 25 adalah total tindakan di semua tabel dalam permintaan, bukan per tabel.
- Muatan berukuran besar — bahkan pada tindakan ≤25, seluruh batch ditolak jika ada item yang melebihi 400 KB atau total permintaan melebihi 16 MB.
Bagaimana cara memperbaikinya
- Pisahkan ke dalam grup yang berisi ≤25 tindakan dan kirim satu
BatchWriteItemper bagian. - Menangani
UnprocessedItems—BatchWriteItemdapat mengembalikan item yang tidak diproses (pembatasan); coba lagi yang memiliki backoff eksponensial. Hal ini normal bahkan dalam kumpulan 25 item yang valid. - Jaga setiap batch di bawah 16 MB — dengan item besar Anda mungkin memerlukan kurang dari 25 per panggilan.
- Gunakan pembantu yang melakukan buffering untuk Anda — potongan
Table.batch_writer()boto3 menulis dan mengirim ulang item yang belum diproses secara otomatis (Klien yang Ditingkatkan dari Java SDK / v1 DynamoDBMapper juga mencoba ulang item yang belum diproses). Klien tingkat rendah dan klien dokumen JavaScript tidak membagi batch berukuran besar. - Ukur setiap potongan berdasarkan byte serta jumlah. Dua puluh lima item besar dapat melebihi 16 MB meskipun jumlah tindakannya valid.
Ukur di DynoTable
Sebelum memuat data secara massal, periksa ukuran item di DynoTable — buka item sampel dengan ⌘K dan konfirmasikan setiap item yang ukurannya kurang dari 400 KB. Kalkulator ukuran item memperkirakan ukuran muatan batch sehingga Anda memilih ukuran potongan yang aman sebelum loader Anda berjalan.
Gunakan staging (⌘S) untuk menguji penulisan batch kecil terhadap tabel dev sebelum Anda menjalankan impor penuh. Ganti profil dengan ⌘P; konfigurasikan di bawah Pengaturan → Profil dengan Uji Koneksi. Lihat Menghubungkan ke AWS dan Instal.
Sumber
- BatchWriteItem — Referensi Amazon DynamoDB API (diverifikasi 13-07-2026)
- Amazon DynamoDB — panduan AWS SDK untuk Python (Boto3) (diverifikasi 13-07-2026)
Kesalahan terkait
- Terlalu banyak item yang diminta untuk panggilan BatchGetItem — batas sisi baca (100 item).
- Daftar kunci item yang disediakan berisi duplikat — kunci yang sama dua kali dalam satu BatchWriteItem.
- ProvisionedThroughputExceededException — pembatasan yang muncul sebagai UnprocessedItems.
- Contoh kode: BatchWriteItem di Node.js · dengan Python (boto3) — penulisan terpotong dengan percobaan ulang UnprocessedItems.
- Pelajari: Operasi batch DynamoDB
Referensi
- BatchWriteItem — Referensi Amazon DynamoDB API
- BatchGetItem — Referensi Amazon DynamoDB API
- Penanganan kesalahan dengan DynamoDB — Panduan Pengembang Amazon DynamoDB
- panduan Amazon DynamoDB — AWS SDK untuk Python (Boto3)
Terakhir diverifikasi 2026-07-13 berdasarkan dokumentasi resmi AWS yang ditautkan di atas.