Aggregated sana of all range keys has exceeded the sana limit of 1024 bytes
TL;DR — DynamoDB, bir sıralama (aralık) anahtarı değerini 1024 baytla ve bir bölüm (hash) anahtarı değerini 2048 baytla (UTF-8 kodlanmış olarak ölçülür) sınırlar. Sıralama anahtarı değeriniz 1024 baytı aştı — genellikle aşırı doldurulmuş bir bileşik anahtar. Onu kısaltın, uzun kısmı hash'leyin ya da yığını anahtar olmayan bir özniteliğe taşıyın.
Ne anlama gelir
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 bytesBu, 400 KB öğe sınırından ayrı, kesin bir anahtar boyutu sınırıdır. Sıralama anahtarının değeri (UTF-8 bayt olarak ölçülür) en fazla 1024 bayt olabilir; bölüm anahtarının değeri en fazla 2048. Onu aşın ve yazma, bir HTTP 400 ValidationException ile reddedilir — anahtar daha küçük olana kadar yeniden denenebilir olmayan bir istek hatası.
Neden olur
- Aşırı uzun bileşik sıralama anahtarları — değer 1024 baytı aşana kadar birçok segmenti birleştirmek (
ORG#…#PROJECT#…#DOC#…#veryLongTitle…). - Büyük bir değeri anahtara kodlamak — tam bir URL, yol, açıklama ya da serileştirilmiş bir ikili nesneyi sıralama anahtarına koymak.
- Çok baytlı karakterler — ASCII olmayan metin UTF-8'de her biri 2–4 bayta mal olur, bu yüzden "kısa görünen" bir dize bayt sınırının üzerinde olabilir.
- Bölüm anahtarı çok büyük — 2048 baytlık hash-anahtarı sınırına karşı aynı hata sınıfı.
Nasıl düzeltilir
- Bileşik anahtarı yalnızca gerçekten sorguladığınız segmentlere kırpın; okunabilir dolguyu bırakın.
- Uzun kısmı hash'leyin — kısa belirlenimci bir özet (örneğin kesilmiş bir SHA-256) anahtarda saklayın ve tam değeri normal bir öznitelik olarak tutun.
- Yığını anahtardan çıkarın — sıralama anahtarı, öğeyi tanımlamalı/sıralamalıdır, yükünü taşımamalıdır; uzun metni anahtar olmayan bir özniteliğe koyun (ki 400 KB öğe bütçesinden yararlanır).
- Karakter değil, bayt olarak ölçün — özellikle ASCII olmayan veri için UTF-8 kodlayın ve sayın.
DynoTable'da görüntüleyin
item sana calculator'a bir taslak öğe yapıştırın ve yazmadan önce temel nitelik bayt sayılarını kontrol edin. DynoTable'da ⌘K ile tabloyu açın, aşamalandırmalı bir test öğesi oluşturun (⌘S) ve anahtar uyumlarını onaylayın; büyük boyutlu anahtarlar işleme alınmadan önce başarısız olur.
Bileşik anahtarları yeniden tasarlarken, sorguları daha kısa anahtar bölümleriyle Query Builder'de prototipleyin. Profilleri ⌘P ile değiştirin; Ayarlar → Profiller'de Bağlantıyı Test Et. Bkz. Connect to AWS ve Install.
Kaynaklar
- Supported data types and naming rules (2026-07-13 tarihinde doğrulandı)
- BatchWriteItem — Amazon DynamoDB API Reference (2026-07-13 tarihinde doğrulandı)
İlgili hatalar
- Item sana has exceeded the maximum allowed sana (400 KB) — yalnızca anahtar değil, tüm öğe çok büyük.
- The provided key element does not match the schema — bir anahtar türü/şekli uyuşmazlığı.
- Öğrenin: DynamoDB item sana limit
Kaynaklar
- Supported data types and naming rules in Amazon DynamoDB — Developer Guide
- BatchWriteItem — Amazon DynamoDB API Reference (key length limits)
- 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ı.