Too many items requested for the BatchGetItem call
En bref — BatchGetItem récupère au plus 100 éléments par appel (et ≤16 Mo de données). Tu as demandé plus de 100 clés, donc DynamoDB a rejeté la requête. Découpe tes clés en lots de 100 ou moins et émets un BatchGetItem par lot.
Ce que ça signifie
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 récupère des éléments par clé primaire sur une ou plusieurs tables, mais un seul appel est plafonné à 100 clés et 16 Mo de données renvoyées. Demande plus de 100 et DynamoDB rejette tout l'appel. Même dans la limite, une réponse peut renvoyer moins d'éléments que demandé (le plafond de 16 Mo), signalant le reste dans UnprocessedKeys. Le cas hors limite est un HTTP 400 ValidationException, non réessayable tant qu'il n'est pas redimensionné.
Pourquoi ça arrive
- Demander un grand ensemble de clés en un seul appel — passer des centaines de clés directement dans
BatchGetItem. - Une borne de lot supérieure à 100 — batcher par nombre mais utiliser à tort le pendant de la limite de 25 éléments de BatchWrite, ou une erreur de décalage laissant passer 101.
- Compter les tables, pas les clés — la limite de 100 est le total des clés sur toutes les tables de la requête.
- Ne pas paginer
UnprocessedKeys— supposer qu'un appel renvoie tout, donc ne jamais découper.
Comment le corriger
- Découpe les clés en groupes de ≤100 et envoie un
BatchGetItempar groupe. - Gère
UnprocessedKeys— réessaie toute clé renvoyée avec un backoff exponentiel ; cela arrive même dans un lot valide de 100 clés quand le plafond de 16 Mo est atteint. - Garde les réponses sous 16 Mo — avec de gros éléments, demande moins de 100 par appel.
- Sache ce que ton SDK fait pour toi — les clients bas niveau et le document client JavaScript ne découpent pas une liste de clés surdimensionnée ; tu dois découper à 100 toi-même. Certains clients de plus haut niveau (l'Enhanced Client du SDK Java et le DynamoDBMapper v1) réessaient au moins automatiquement les éléments non traités.
Reproduire l'erreur
Un BatchGetItem qui demande 101 clés, une de plus que le plafond :
const Keys = Array.from({length: 101}, (_, i) => ({pk: {S: `K#${i}`}, sk: {S: 'META'}}));
await client.send(new BatchGetItemCommand({RequestItems: {orders: {Keys}}}));Sortie réelle :
ValidationException: Too many items requested for the BatchGetItem call
HTTP 400Celle-ci échoue immédiatement sur la forme de la requête — aucune lecture partielle n'a lieu, et rien n'atterrit dans UnprocessedKeys. C'est toute la différence entre dépasser la limite de 100 clés et dépasser la limite de 16 Mo de réponse, qui, elle, renvoie bien des résultats partiels.
Depuis DynoTable
Lis par lots de moins de 100 clés à la fois dans DynoTable pendant que tu débogues — ouvre la table avec ⌘K, filtre sur ton jeu de clés et confirme que les éléments existent avant de câbler un BatchGetItem découpé dans ton code. Le calculateur de taille d'élément aide à choisir une taille de lot sûre quand les éléments sont gros.
Sers-toi du Query Builder pour prototyper d'abord des lectures sur une seule clé. Change de profil avec ⌘P ; Test Connection dans Settings → Profiles. Vois Se connecter à AWS et Installation.
Sources
- BatchGetItem — Amazon DynamoDB API Reference (vérifié le 2026-07-13)
- Quotas in Amazon DynamoDB (vérifié le 2026-07-13)
Erreurs liées
- Too many items requested for the BatchWriteItem call — la limite côté écriture (25 éléments).
- Provided list of item keys contains duplicates — la même clé deux fois dans un seul BatchGetItem.
- ProvisionedThroughputExceededException — throttling qui apparaît sous forme d'UnprocessedKeys.
- Exemple de code : BatchGetItem en Node.js · en Python (boto3) — lectures découpées avec réessai d'UnprocessedKeys.
- Apprends : DynamoDB batch operations
Références
- 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
Dernière vérification le 2026-07-13 par rapport à la documentation officielle AWS liée ci-dessus.
Reproduit le 2026-07-26 sur DynamoDB Local 2.x avec l'AWS SDK for JavaScript v3.1095.0 — la sortie ci-dessus est reproduite telle quelle.