Supplied AttributeValue is empty, must contain exactly one of the supported datatypes

TL;DR — Item'ınızdaki (ya da anahtardaki) özniteliklerden birinde içinde değer olmayan bir AttributeValue var — boş bir küme, bir anahtar özniteliğinde boş bir string/ikili, bir null/undefined alan ya da S/N/BOOL/… üyesi olmayan bir sarmalayıcı. DynamoDB, her AttributeValue'nun tam olarak bir desteklenen tür tutmasını gerektirir. Boş özniteliği kaldırın ya da ona gerçek bir değer verin.

Ne anlama gelir

ValidationException: Supplied AttributeValue is empty, must contain exactly one of the supported datatypes

DynamoDB, bir öğenin şeklini doğrularken isteği reddetti: bir AttributeValue mevcuttu ama DynamoDB'nin saklayabileceği hiçbir şey taşımıyordu. Her AttributeValue tam olarak bir türlü değer (S, N, B, SS, NS, BS, M, L, NULL veya BOOL) içermelidir. Bu, özniteliği düzeltene kadar yeniden denenebilir olmayan bir HTTP 400'dür — aynı öğe yine başarısız olur.

Bu, ExpressionAttributeValues contains invalid value'ten farklıdır: o, bir ifadedeki bir :placeholder ile ilgilidir; bu, öğe gövdesinin kendisindeki bir öznitelikle ilgilidir (PutItem, BatchWriteItem, TransactWriteItems).

Neden olur

  • Yazdığınız nesnede bir undefined/null alan — marshalcı onu atlamak ya da NULL türlemek yerine boş bir AttributeValue yayar.
  • Boş bir KümeSS, NS veya BS en az bir üyeye sahip olmalıdır. Boş bir küme her yerde geçersizdir.
  • Bir anahtar özniteliğinde boş bir string — anahtar olmayan string öznitelikleri "" olabilir ama bir tablo ya da indeks anahtarı özniteliği olamaz.
  • Bir anahtarda boş bir ikili değer — stringlerle aynı kural: boş ikili anahtar olmayan öznitelikler için (ve kümeler, listeler ve map'ler içinde) sorunsuzdur, asla bir anahtar için değil.
  • Kalıcı kıldığınız bir Map ya da List içine gömülü yuvalanmış bir boş küme — yuvalanmış boş stringler ve ikili değerlere izin verilir; yuvalanmış boş kümelere izin verilmez.

Nasıl düzeltilir

  1. Yazmadan önce boş/undefined öznitelikleri çıkarın. Item'ı yalnızca gerçekten değeri olan alanlardan oluşturun; boş bir sarmalayıcı göndermek yerine gerisini bırakın.
  2. Document Client için boş-değer ele alışını etkinleştirin. @aws-sdk/lib-dynamodb'nin removeUndefinedValues: true marshal seçeneği, undefined alanları düşürür, böylece kabloya hiç ulaşmazlar. (Anahtar olmayan öznitelikler için boş stringlere ve ikili değerlere DynamoDB doğrudan izin verir.)
  3. Asla boş bir Küme göndermeyin — kümenin üyesi olmadığında özniteliği tamamen atlayın ya da bir NULL saklayın.
  4. Anahtar özniteliklerine gerçek değerler verin — bir bölüm/sıralama anahtarı (tablo ya da indeks) asla boş bir string ya da boş bir ikili olamaz.
  5. Sorunlu öznitelik üst seviyede değilse başıboş boş kümeler için yuvalanmış Map'leri/Listeleri dolaşın.

SSS

DynamoDB'de "Supplied AttributeValue is empty" ne anlama gelir? Öğenizdeki bir öznitelikte, saklanan değer içermeyen bir AttributeValue var — bir anahtar özniteliğinde boş bir string ya da ikili, boş bir Küme ya da bir null/undefined alan. Her AttributeValue tam olarak bir desteklenen veri türü içermelidir, dolayısıyla DynamoDB yazmayı reddeder.

DynamoDB'nin boş değerleri reddetmesini nasıl durdururum? Yazmadan önce boş ve tanımsız öznitelikleri kaldırın (ya da Document Client'ın removeUndefinedValues seçeneğini kullanın). Asla boş bir Küme göndermeyin — özniteliği atlayın ya da bir NULL saklayın. Anahtar öznitelikleri her zaman gerçek, boş olmayan bir değer taşımalıdır.

İlgili hatalar

Kaynaklar

En son 2026-07-13 tarihinde yukarıda bağlantısı verilen resmi AWS belgelerine karşı doğrulandı.

Console olmadan DynamoDB ile çalış

DynamoDB’nin çalıştıramadığı gerçek SQL’i çalıştıran hızlı bir DynamoDB masaüstü istemcisi — JOINs, GROUP BY, toplamalar — görsel düzenleme ve kendi Bedrock anahtarların üzerinde bir yapay zekâ aracısıyla.

30 günlük ücretsiz deneme, kredi kartı yok — ardından süre sınırı olmayan Ücretsiz plan.