Too many items requested for the BatchGetItem call
TL;DR — BatchGetItem çağrı başına en fazla 100 öğe (ve ≤16 MB veri) getirir. 100'den fazla anahtar istediniz, bu yüzden DynamoDB isteği reddetti. Anahtarlarınızı 100 veya daha az parçalara bölün ve her parça için bir BatchGetItem gönderin.
Ne anlama gelir
ValidationException: 1 validation error detected: Value at 'RequestItems.<table-name>.member.Keys' failed to satisfy constraint: Member must have length less than or equal to 100
# on DynamoDB Local the same call is rejected with a shorter sentence:
ValidationException: Too many items requested for the BatchGetItem callBatchGetItem, bir veya daha fazla tabloda öğeleri birincil anahtara göre getirir, ancak tek bir çağrı 100 anahtar ve 16 MB dönen veriyle sınırlıdır. 100'den fazla isteyin ve DynamoDB çağrının tamamını reddeder. Sınır içinde bile bir yanıt, istenenden daha az öğe döndürebilir (16 MB tavanı) ve gerisini UnprocessedKeys içinde bildirir. Sınır aşımı durumu, yeniden boyutlandırılana kadar yeniden denenebilir olmayan bir HTTP 400 ValidationException'dır.
Neden olur
- Tek bir çağrıda büyük bir anahtar kümesi istemek — yüzlerce anahtarı doğrudan
BatchGetItem'a geçirmek. - 100'ün üstünde bir parça sınırı — sayıya göre gruplamak ama 25 öğelik BatchWrite sınırının kardeşini yanlış kullanmak ya da 101'e izin veren bir bir-eksik hatası.
- Anahtarları değil tabloları saymak — 100 sınırı, istekteki tüm tablolar genelindeki toplam anahtardır.
UnprocessedKeyssayfalamamak — bir çağrının her şeyi döndürdüğünü varsaymak, dolayısıyla hiç parçalamamak.
Nasıl düzeltilir
- Anahtarları ≤100'lük gruplara bölün ve her parça için bir
BatchGetItemgönderin. UnprocessedKeys'i ele alın — dönen anahtarları üstel geri çekilmeyle yeniden deneyin; bu, geçerli bir 100 anahtarlık toplu istekte bile 16 MB sınırına ulaşıldığında olur.- Yanıtları 16 MB'nin altında tutun — büyük öğelerle, çağrı başına 100'den az isteyin.
- SDK'nızın senin için ne yaptığını bilin — düşük seviyeli istemciler ve JavaScript belge istemcisi, aşırı büyük bir anahtar listesini bölmez; kendiniz 100'e parçalamalısınız. Bazı üst seviye istemciler (Java SDK'nın Enhanced Client'ı ve v1 DynamoDBMapper), en azından işlenmemiş öğeleri otomatik olarak yeniden dener.
Nasıl yeniden oluşturulur
Sınırın bir üstü olan 101 anahtar isteyen bir BatchGetItem:
const Keys = Array.from({length: 101}, (_, i) => ({pk: {S: `K#${i}`}, sk: {S: 'META'}}));
await client.send(new BatchGetItemCommand({RequestItems: {orders: {Keys}}}));Gerçek çıktı:
ValidationException: Too many items requested for the BatchGetItem call
HTTP 400Bu, istek şekli üzerinde hemen başarısız olur — kısmi bir okuma gerçekleşmez ve UnprocessedKeys içine hiçbir şey düşmez. 100 anahtarlık sınırı aşmakla, kısmi sonuç döndüren 16 MB yanıt sınırını aşmak arasındaki fark tam olarak budur.
DynoTable'dan
Hata ayıklama sırasında 100'den az anahtarı aynı anda toplu olarak okuyun; ⌘K ile tabloyu açın, anahtar kümenize göre filtreleyin ve kodda parçalanmış BatchGetItem'yi bağlamadan önce öğelerin mevcut olduğunu onaylayın. item sana calculator öğeler büyük olduğunda güvenli bir parça boyutu seçmenize yardımcı olur.
Önce tek tuşlu okumaların prototipini oluşturmak için Query Builder'yi kullanın. Profilleri ⌘P ile değiştirin; Ayarlar → Profiller'de Bağlantıyı Test Et. Bkz. Connect to AWS ve Install.
Kaynaklar
- BatchGetItem — Amazon DynamoDB API Reference (2026-07-13 tarihinde doğrulandı)
- Quotas in Amazon DynamoDB (2026-07-13 tarihinde doğrulandı)
İlgili hatalar
- Too many items requested for the BatchWriteItem call — yazma tarafı sınırı (25 öğe).
- Provided list of item keys contains duplicates — tek bir BatchGetItem içinde aynı anahtarın iki kez geçmesi.
- ProvisionedThroughputExceededException — UnprocessedKeys olarak beliren kısıtlama.
- Kod örneği: BatchGetItem in Node.js · Python (boto3) ile — UnprocessedKeys yeniden denemesiyle parçalanmış okumalar.
- Öğrenin: DynamoDB batch operations
Kaynaklar
- BatchGetItem — Amazon DynamoDB API Reference
- BatchWriteItem — Amazon DynamoDB API Reference
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
- Quotas in Amazon DynamoDB — Amazon DynamoDB Developer Guide
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.