"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

  1. 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.
  2. Daha kompakt bir anahtar seçin — hantal alan yerine daha kısa bir doğal tanımlayıcı.
  3. 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.
  4. 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

İ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.