"Size of hashkey has exceeded the maximum size limit of 2048 bytes": anahtar boyutu üst sınırı aştı
TL;DR — DynamoDB anahtar uzunluklarını sınırlar: bir bölüm (hash) anahtarı değeri en fazla 2048 bayt ve bir sıralama (aralık) anahtarı değeri en fazla 1024 bayt olabilir, UTF-8 (ya da çıplak ikili) bayt olarak ölçülür. Anahtarı sınırı aşan bir yazma reddedilir. Anahtarı kısaltın — uzun değerleri hash'leyin ya da hantal veriyi anahtar olmayan bir özniteliğe taşıyın.
Ne anlama gelir
ValidationException: One or more parameter values were invalid: Size of hashkey has exceeded the maximum size limit of2048 bytes
# sort-key variant:
ValidationException: One or more parameter values were invalid: Aggregated size of all range keys has exceeded the size limit of 1024 bytes
# on DynamoDB Local you get one combined sentence instead, naming neither key:
ValidationException: Hash primary key values must be under 2048 bytes, and range primary key values must be under 1024 bytes(Evet, "of2048"deki eksik boşluk hizmetin gerçek mesajındadır.) Anahtar öznitelikleri DynamoDB tarafından indekslenir ve fiziksel olarak bölümlenir, bu yüzden uzunlukları 400 KB öğe sınırının çok altında sınırlıdır. Bölüm anahtarı değeri 1 ile 2048 bayt ve sıralama anahtarı değeri 1 ile 1024 bayt olmalıdır. Bayt sayısı kodlanmış boyuttur (stringler için UTF-8, ikili için çıplak baytlar) — çok baytlı karakterler birden fazla sayılır. Bu, anahtar küçülene kadar yeniden denenebilir olmayan, istemci tarafında bir HTTP 400 ValidationException'dır.
Neden olur
- Bölüm anahtarı olarak uzun bir string — doğrudan anahtar değeri olarak kullanılan bir URL, tam belge, kodlanmış ikili nesne ya da birleştirilmiş bileşik anahtar.
- Ayrıntılı bir bileşik sıralama anahtarı —
#ile birleştirilmiş ve birlikte 1024 baytı aşan birçok segment. - Bir anahtarda Base64 / serileştirilmiş veri — kodlama bayt sayısını sınırın üzerine şişirir.
- Çok baytlı metin — UTF-8 kodlaması, karakter sayısının önerdiğinden daha büyük olan ASCII olmayan içerik.
Nasıl düzeltilir
- Uzun değeri hash'leyin — anahtar olarak belirlenimci bir özet (örneğin SHA-256, ~32 bayt) saklayın ve tam değeri ayrı bir anahtar olmayan öznitelikte tutun.
- Daha kompakt bir anahtar seçin — hantal alan yerine daha kısa bir doğal tanımlayıcı.
- Bileşik anahtarı kısaltın — bir
#ile birleştirilmiş sıralama anahtarını oluşturan segmentleri kırpın ya da kısaltın. - Aşırı boyutlu içeriği anahtardan normal bir özniteliğe (yalnızca 400 KB öğe sınırına sığması gereken) taşıyın.
DynoTable'dan bağlanın
Taslak anahtar değerlerini item sana calculator'a yapıştırın ve yazmadan önce bayt sayılarını 2048/1024 sınırlarına göre kontrol edin. DynoTable'da aşamalandırma (⌘S), ⌘K ile açılan test öğelerindeki büyük boyutlu anahtarları yakalar.
Bileşik anahtarları kısaltırken, Query Builder'deki prototip sorguları. Profilleri ⌘P ile değiştirin; Ayarlar → Profiller'de Bağlantıyı Test Et. Bkz. Connect to AWS ve Install.
Kaynaklar
- Constraints in Amazon DynamoDB (2026-07-13 tarihinde doğrulandı)
- Supported data types and naming rules (2026-07-13 tarihinde doğrulandı)
İlgili hatalar
- Item sana has exceeded the maximum allowed sana — 400 KB tüm öğe sınırı (anahtar başına sınıra karşı).
- Item sana to update has exceeded the maximum allowed sana — bir güncelleme sırasında bir anahtar/indeks boyut sınırı.
- ValidationException (genel bakış)
- Öğrenin: Item sana & the 400 KB limit · Composite primary keys
Kaynaklar
- Constraints in Amazon DynamoDB — Amazon DynamoDB Developer Guide
- Supported data types and naming rules in Amazon DynamoDB — Amazon DynamoDB Developer Guide
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
En son 2026-07-13 tarihinde yukarıda bağlantısı verilen resmi AWS belgelerine karşı doğrulandı.