DynamoDB ValidationException
TL;DR — Bir ValidationException, DynamoDB'nin herhangi bir veriye dokunmadan önce isteği hatalı biçimlendirilmiş olarak reddettiği anlamına gelir. Mesaj metnini okuyun: hatalı olan tam parametreyi adıyla verir. Hiçbir şey yazılmadı, bu yüzden istek şeklini düzeltin ve yeniden deneyin.
Ne anlama gelir
ValidationException, doğrulamayı geçemeyen bir istek için DynamoDB'nin genel amaçlı istemci hatasıdır (HTTP 400) — hatalı bir ifade, yanlış tür sarmalayıcısındaki bir değer, tablonun şemasıyla eşleşmeyen bir anahtar ya da aşılan bir sınır. Yeniden denenebilir değildir: aynı isteği tekrar göndermek aynı hatayı üretir.
Bir hata ailesi olduğundan, çözüm tamamen mesaj dizesine bağlıdır. En yaygın varyantların her birinin kendi sayfası vardır:
- Query condition missed key schema element
- The provided key element does not match the schema
- Geçersiz UpdateExpression sözdizimi
- ExpressionAttributeValues contains invalid value
- Item size has exceeded the maximum allowed size
Neden olur
- Bölüm anahtarını içermeyen ya da anahtar olmayan bir özniteliğe başvuran bir KeyConditionExpression.
- Türü tablo tanımıyla eşleşmeyen bir anahtar özniteliği (örneğin bir sayıyı string olarak göndermek).
- Hatalı biçimlendirilmiş bir UpdateExpression / ConditionExpression / FilterExpression — çıplak kullanılan bir ayrılmış sözcük, eksik bir
#nameveya:valueyer tutucusu. - İzin verilmeyen yerlerde boş değerler ya da desteklenmeyen bir türe çözümlenen bir öznitelik.
- Bir aşılan sınır — 400 KB üzerinde öğe, bir
BatchWriteItem'da çok fazla öğe, çok uzun ifade.
Nasıl düzeltilir
- Tam mesajı okuyun. DynamoDB hangi parametrenin başarısız olduğunu söyler — dize kesindir ("Invalid UpdateExpression: Attribute name is a reserved keyword; reserved keyword: status").
- Yukarıdaki varyantla eşleştirin ve o sayfanın çözümünü uygulayın.
- Göndermeden önce istek şeklini yerel olarak doğrulayın — çoğu
ValidationException, bir ifadede ya da bir tür sarmalayıcısında bir yazım hatasıdır.
SSS
Bir DynamoDB ValidationException yeniden denenebilir mi? Hayır. İsteğin kendisi hatalı biçimlendirilmiştir, bu yüzden onu tekrar göndermek aynı hatayı üretir. Mesaj metnini okuyun — hatalı olan tam parametreyi adıyla verir — istek şeklini düzeltin ve sonra yeniden deneyin.
Bir ValidationException'ın en yaygın nedenleri nelerdir? Bölüm anahtarını atlayan ya da anahtar olmayan bir özniteliğe başvuran bir KeyConditionExpression, türü tablo tanımıyla eşleşmeyen bir anahtar özniteliği, ayrılmış bir sözcük ya da eksik bir yer tutucu kullanan hatalı biçimlendirilmiş bir ifade, izin verilmeyen yerlerdeki boş değerler ya da 400 KB üzerinde bir öğe gibi aşılan bir sınır.
İlgili hatalar
- ConditionalCheckFailedException — bir koşul başarısız oldu (hatalı biçimlendirilmiş değil; yazma geçerliydi ama reddedildi).
- ResourceNotFoundException — tablo veya indeks yok.
- Öğrenin: Expression names & values · Update expressions
Kaynaklar
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
- Constraints in Amazon DynamoDB — Amazon DynamoDB Developer Guide
- Reserved words in DynamoDB — Amazon DynamoDB Developer Guide
En son 2026-07-13 tarihinde yukarıda bağlantısı verilen resmi AWS belgelerine karşı doğrulandı.