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 datatypes

DynamoDB 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/null dalam objek yang Anda tulis — marshaller mengeluarkan AttributeValue kosong alih-alih melewatinya atau memberinya tipe NULL.
  • Set kosongSS, NS, atau BS harus 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 Map atau List yang Anda persist — string dan nilai binary kosong bersarang diizinkan; set kosong bersarang tidak.

Bagaimana cara memperbaikinya

  1. Hapus atribut kosong/undefined sebelum menulis. Bangun Item dari hanya field yang benar-benar punya nilai; hapus sisanya alih-alih mengirim pembungkus kosong.
  2. Untuk Document Client, aktifkan penanganan nilai-kosong. Opsi marshalling removeUndefinedValues: true dari @aws-sdk/lib-dynamodb menghapus field undefined agar tidak pernah mencapai wire. (String kosong dan nilai binary untuk atribut non-kunci diizinkan DynamoDB secara langsung.)
  3. Jangan pernah mengirim Set kosong — hilangkan atribut sepenuhnya ketika set tidak punya anggota, atau simpan NULL.
  4. Beri atribut kunci nilai nyata — partition/sort key (tabel atau index) tidak pernah bisa berupa string kosong atau binary kosong.
  5. 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

Referensi

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

Bekerja dengan DynamoDB tanpa Console

Klien desktop DynamoDB yang cepat dan menjalankan SQL sungguhan yang tidak bisa dijalankan DynamoDB — JOINs, GROUP BY, agregasi — dengan editing visual dan agen AI pada kunci Bedrock milik Anda sendiri.

Uji coba gratis 30 hari, tanpa kartu kredit — lalu paket Free tanpa batas waktu.