ValidationException: Item size has exceeded the maximum allowed size

TL;DR — Bir DynamoDB öğesi en fazla 400 KB olabilir (öznitelik adları + değerleri birleşik). Yazmanız bir öğeyi bunun üzerine iter. Büyük alanı dışarı taşıyın (S3'e ya da öğeler arasında bölün) ve bunun yerine bir referans saklayın.

Ne anlama gelir

ValidationException: Item size has exceeded the maximum allowed size

Sınır 400 KB = 409.600 bayttır. Tüm öğeyi sayar: her öznitelik adı artı değeri, UTF-8 kodlanmış, yuvalanmış map/list ek yükü dahil. Mevcut bir öğeyi 400 KB'nin üzerine büyüten bir UpdateItem aynı şekilde başarısız olur (bir güncelleme olarak, mesaj "Item size to update has exceeded the maximum allowed size" olarak okunur).

Neden olur

  • Büyük ikili nesneleri satır içi saklamak — base64 görüntüler, PDF'ler, büyük JSON belgeleri.
  • Zamanla 400 KB'yi geçene kadar büyüyen sınırsız bir liste/map (yalnızca ekleme dizileri, olay günlükleri).
  • Büyük bir öğe boyunca çarpılan uzun öznitelik adları.
  • Tek bir öğeye çok fazla normalleştirmeyi kaldırmak.

Nasıl düzeltilir

  1. Büyük değerleri S3'e boşaltın. Nesneyi S3'te saklayın ve DynamoDB'de yalnızca anahtarı/URL'yi tutun. Bu, sınıra yaklaşan her şey için standart desendir.
  2. Veriyi birden çok öğeye bölün. Öğe koleksiyonu / dikey bölüm desenini kullanın — tek bir mantıksal varlık, bir bölüm anahtarını paylaşan birkaç öğe olarak.
  3. Büyüyen koleksiyonları sınırlayın. Tek bir öğenin sınırsız bir liste biriktirmesine izin vermeyin; girdileri sıralama anahtarıyla anahtarlanan alt öğelere yuvarlayın.
  4. S3 bir seçenek değilse, saklamadan önce gerçekten büyük metni sıkıştırın (gzip → ikili öznitelik).

Örnek — referans deseni

// Instead of storing the blob inline, store an S3 pointer:
await doc.send(
  new PutCommand({
    TableName: 'Documents',
    Item: {
      pk: 'DOC#1',
      title: 'Q3 report',
      s3Key: 'documents/DOC#1/report.pdf', // the bytes live in S3
      sizeBytes: 2_400_000
    }
  })
);

SSS

DynamoDB'de maksimum öğe boyutu nedir? Öğe başına 400 KB (409.600 bayt), her öznitelik adı artı değeri, UTF-8 kodlanmış, yuvalanmış map ve list ek yükü dahil sayılır. Mevcut bir öğeyi 400 KB'nin üzerine büyüten bir UpdateItem aynı hatayla başarısız olur.

DynamoDB'de 400 KB'den büyük veriyi nasıl saklarım? Büyük değeri S3'e boşaltın ve DynamoDB'de yalnızca anahtarı veya URL'yi tutun, veriyi bir bölüm anahtarını paylaşan birden çok öğeye bölün ya da büyük metni bir ikili özniteliğe sıkıştırın. Tek bir öğenin sınırsız bir liste biriktirmesine izin vermeyin.

Nasıl yeniden oluşturulur

400 KB tavanının hemen üstünde, 410 KB'lik bir string özniteliği taşıyan tek bir öğe:

await client.send(
  new PutItemCommand({
    TableName: 'orders',
    Item: {pk: {S: 'BIG'}, sk: {S: 'META'}, blob: {S: 'x'.repeat(410 * 1024)}}
  })
);

Gerçek çıktı:

ValidationException: Item size has exceeded the maximum allowed size
HTTP 400

Mesaj size ne kadar aştığınızı ya da bunu hangi özniteliğin yaptığını asla söylemez — bu yüzden bir öğe birden fazla kaynaktan birleştiriliyorsa, retten sonra ikili aramayla kısımları elemek yerine yazmadan önce ölçün.

İlgili hatalar

Kaynaklar

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

2026-07-26 tarihinde AWS SDK for JavaScript v3.1095.0 ile DynamoDB Local 2.x'e karşı yeniden üretildi — yukarıdaki çıktı birebir alınmıştır.

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.