Daftar kunci item yang disediakan berisi duplikat (BatchGetItem)
TL;DR — Array BatchGetItem Keys Anda untuk satu tabel mencantumkan kunci utama yang sama lebih dari sekali. DynamoDB mengharuskan setiap kunci dalam suatu batch harus unik dan menolak seluruh permintaan — DynamoDB tidak secara diam-diam membatalkan penipuan. Hapus duplikat daftar kunci sebelum Anda mengirimkannya.
Apa artinya
ValidationException: Provided list of item keys contains duplicatesBatchGetItem membaca hingga 100 item di seluruh tabel. Dalam daftar Keys tabel tunggal, setiap entri harus berupa kunci utama yang berbeda (kunci partisi, atau kunci partisi + pengurutan untuk tabel gabungan). Dua entri yang menyelesaikan kunci yang sama membuat HTTP 400 ValidationException ini tersandung, dan seluruh panggilan gagal — tidak ada item yang dikembalikan. Ini tidak dapat dicoba ulang apa adanya.
Mengapa itu terjadi
- Kunci yang sama muncul dua kali dalam daftar — sering kali karena ID dikumpulkan dari berbagai sumber dan tidak pernah digabungkan.
- Daftar kunci yang dihasilkan (misalnya memetakan daftar rekaman ke kunci) yang sumbernya memiliki baris duplikat.
- Kebingungan kunci komposit — dua entri berbagi kunci partisi tetapi Anda lupa perbedaan kunci pengurutan; atau keduanya benar-benar identik.
- Perbedaan huruf besar/kecil yang menutupi duplikat asli — dua kunci yang menghasilkan nilai yang sama.
- Memuat saluran pipa (Lem, ETL khusus) yang berisi kunci batch tanpa langkah penghapusan dupe.
Bagaimana cara memperbaikinya
- Hapus duplikat sebelum panggilan. Kunci setiap entri dengan string yang stabil dan simpan satu:
const seen = new Set(); const keys = raw.filter((k) => { const id = `${k.pk.S}#${k.sk?.S ?? ''}`; if (seen.has(id)) return false; seen.add(id); return true; }); - Ingat bahwa batch adalah sebuah set, bukan bag — Anda hanya perlu satu kali pembacaan per kunci; item itu tetap kembali satu kali.
- Bagi menjadi 100 kunci per
BatchGetItemdan tanganiUnprocessedKeyspada responsnya (pelambatan, bukan duplikat). - Jaga ETL/loader Anda dengan de-dupe yang sama agar masalah tidak terulang di bagian hulu.
- Catat panjang daftar kunci sebelum setiap batch. Saat duplikat menyelinap masuk, kesalahan tidak memberikan indeks — log Anda harus menunjukkan sumber upstream mana yang mengulangi sebuah ID.
Jalur di DynoTable
Sebelum Anda membaca kunci secara batch dari produksi, temukan duplikat di DynoTable — buka tabel dengan ⌘K, filter ke ID yang ingin Anda ambil, dan konfirmasikan setiap kunci utama muncul satu kali. Daftar item menunjukkan kunci partisi dan pengurutan secara berdampingan sehingga tabrakan kunci komposit terlihat jelas.
Saat Anda memindahkan pembacaan ke dalam kode, gunakan Pembuat Kueri untuk membuat prototipe pembacaan kunci tunggal terlebih dahulu, lalu skalakan ke BatchGetItem yang dipotong. Ganti profil dengan ⌘P; konfigurasikan di bawah Pengaturan → Profil dengan Uji Koneksi. Lihat Menghubungkan ke AWS dan Instal.
Sumber
- BatchGetItem — Referensi Amazon DynamoDB API (diverifikasi 13-07-2026)
- Penanganan kesalahan dengan DynamoDB (diverifikasi 13-07-2026)
Kesalahan terkait
- Daftar kunci item yang disediakan berisi duplikat (BatchWriteItem) — aturan yang sama pada jalur penulisan.
- ValidationException (ikhtisar)
- Contoh kode: BatchGetItem di Node.js — pembacaan kumpulan potongan yang benar untuk diadaptasi.
- Pelajari: Operasi batch
Referensi
- BatchGetItem — Referensi Amazon DynamoDB API
- BatchWriteItem — Referensi Amazon DynamoDB API
- Penanganan kesalahan dengan DynamoDB — Panduan Pengembang Amazon DynamoDB
Terakhir diverifikasi 2026-07-13 berdasarkan dokumentasi resmi AWS yang ditautkan di atas.