Supplied AttributeValue is empty, must contain exactly one of the supported datatypes
TL;DR — Salah satu atribut dalam Item (atau kunci) Anda punya AttributeValue dengan tidak ada nilai di dalamnya — set kosong, string/binary kosong dalam atribut kunci, field null/undefined, atau pembungkus tanpa anggota S/N/BOOL/…. DynamoDB mensyaratkan setiap AttributeValue menyimpan tepat satu tipe yang didukung. Hapus atribut kosong atau beri nilai nyata.
Apa artinya
ValidationException: Supplied AttributeValue is empty, must contain exactly one of the supported datatypesDynamoDB menolak permintaan saat memvalidasi bentuk item: sebuah AttributeValue hadir tetapi tidak membawa apa pun yang dapat disimpan DynamoDB. Setiap AttributeValue harus berisi tepat satu nilai bertipe (S, N, B, SS, NS, BS, M, L, NULL, atau BOOL). Ini HTTP 400, tidak dapat dicoba ulang — item yang sama gagal lagi sampai Anda memperbaiki atribut.
Ini berbeda dari ExpressionAttributeValues contains invalid value: yang itu tentang :placeholder dalam expression; yang ini tentang atribut dalam body item itu sendiri (PutItem, BatchWriteItem, TransactWriteItems).
Mengapa itu terjadi
- Field
undefined/nulldalam objek yang Anda tulis — marshaller mengeluarkan AttributeValue kosong alih-alih melewatinya atau memberinya tipeNULL. - Set kosong —
SS,NS, atauBSharus punya setidaknya satu anggota. Set kosong tidak valid di mana pun. - String kosong dalam atribut kunci — atribut string non-kunci boleh
"", tetapi atribut kunci tabel atau index tidak boleh. - Nilai binary kosong dalam kunci — aturan yang sama seperti string: binary kosong baik-baik saja untuk atribut non-kunci (dan di dalam set, list, dan map), tidak pernah untuk kunci.
- Set kosong bersarang terkubur di dalam
MapatauListyang Anda persist — string dan nilai binary kosong bersarang diizinkan; set kosong bersarang tidak.
Bagaimana cara memperbaikinya
- Hapus atribut kosong/
undefinedsebelum menulis. BangunItemdari hanya field yang benar-benar punya nilai; hapus sisanya alih-alih mengirim pembungkus kosong. - Untuk Document Client, aktifkan penanganan nilai-kosong. Opsi marshalling
removeUndefinedValues: truedari@aws-sdk/lib-dynamodbmenghapus fieldundefinedagar tidak pernah mencapai wire. (String kosong dan nilai binary untuk atribut non-kunci diizinkan DynamoDB secara langsung.) - Jangan pernah mengirim Set kosong — hilangkan atribut sepenuhnya ketika set tidak punya anggota, atau simpan
NULL. - Beri atribut kunci nilai nyata — partition/sort key (tabel atau index) tidak pernah bisa berupa string kosong atau binary kosong.
- Telusuri Map/List bersarang untuk set kosong nyasar jika atribut yang bermasalah bukan tingkat-atas.
FAQ
Apa arti "Supplied AttributeValue is empty" di DynamoDB? Sebuah atribut dalam item Anda punya AttributeValue yang tidak berisi nilai tersimpan — string atau binary kosong dalam atribut kunci, Set kosong, atau field null/undefined. Setiap AttributeValue harus berisi tepat satu datatype yang didukung, jadi DynamoDB menolak tulisan.
Bagaimana cara menghentikan DynamoDB menolak nilai kosong? Hapus atribut kosong dan undefined sebelum menulis (atau gunakan opsi removeUndefinedValues Document Client). Jangan pernah mengirim Set kosong — hilangkan atribut atau simpan NULL. Atribut kunci harus selalu membawa nilai nyata yang tidak kosong.
Kesalahan terkait
- ExpressionAttributeValues contains invalid value — kelas masalah yang sama dalam placeholder expression.
- ValidationException (ikhtisar)
- Pelajari: DynamoDB data types · JSON marshalling
Referensi
- Supported data types and naming rules in Amazon DynamoDB — Amazon DynamoDB Developer Guide
- AttributeValue — Amazon DynamoDB API Reference
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
Terakhir diverifikasi 2026-07-13 terhadap dokumentasi resmi AWS yang ditautkan di atas.