The provided starting key is invalid
TL;DR — Ta ExclusiveStartKey ne correspond pas au schéma de clé de ce que tu parcours. Elle doit contenir exactement les attributs de clé que DynamoDB a renvoyés dans LastEvaluatedKey — la clé primaire complète, plus la clé d'index quand tu interroges un GSI/LSI — avec les mêmes noms et types. Renvoie LastEvaluatedKey telle quelle ; la fabriquer à la main, c'est ce qui casse.
Ce que ça signifie
ValidationException: The provided starting key is invalidValidationException: Exclusive Start Key must have same size as table's key schemaExclusiveStartKey indique à un Query/Scan où reprendre. DynamoDB la valide par rapport au schéma de clé de la table — ou, pour une requête sur index, par rapport à la clé combinée index-plus-table que porte LastEvaluatedKey. Des attributs manquants, des attributs en trop, des noms erronés ou des types erronés échouent tous avant qu'aucune donnée ne soit lue.
Pourquoi ça arrive
- Fabriquer la clé avec seulement la clé de partition — une table à clé composite a besoin de la clé de partition et de la clé de tri dans la clé de départ.
- Paginer un index avec seulement la clé de table —
LastEvaluatedKeysur une requête GSI/LSI contient à la fois les attributs de la clé d'index et la clé primaire de la table ; tous doivent être renvoyés. - Dérive de type ou de nom — la clé a été sérialisée (JSON, paramètre d'URL, cache) et est revenue avec
"42"là oùLastEvaluatedKeyavait un nombre, ou avec un champ renommé. - Réutiliser une clé entre requêtes — une
LastEvaluatedKeyd'une table/index passée à une requête sur une autre, ou à la même requête après que l'hypothèse de schéma de clé a changé. - Un wrapper qui injecte des valeurs par défaut — un ODM qui remplit des attributs qu'il croit appartenir à la clé peut gonfler la clé de départ au-delà de la taille du schéma.
Comment le corriger
Fais un aller-retour de
LastEvaluatedKeysans y toucher :let ExclusiveStartKey; do { const page = await docClient.send( new QueryCommand({ TableName, KeyConditionExpression, ExpressionAttributeValues, ExclusiveStartKey }) ); items.push(...(page.Items ?? [])); ExclusiveStartKey = page.LastEvaluatedKey; // verbatim — no rebuild } while (ExclusiveStartKey);Sérialise-la sans perte si elle traverse une frontière de requête — quand le curseur de pagination part vers un navigateur puis revient, encode l'objet
LastEvaluatedKeyentier (par ex. base64 de son JSON) au lieu de le reconstruire à partir des champs de l'élément, et garde les types nombre en nombres.Inclus chaque attribut de clé pour la pagination d'index — clé de partition/tri de l'index et clé de partition/tri de la table, exactement telles que renvoyées.
N'invente pas un point de départ — la pagination DynamoDB n'a pas d'offset ; si tu as besoin de « commencer près de X », exprime-le dans la
KeyConditionExpression(sk > :x) plutôt que dans uneExclusiveStartKeyfaite à la main.
Inspecter ce que LastEvaluatedKey contient réellement pour ta table ou ton index enlève toute incertitude — l'application desktop DynoTable parcourt les requêtes page par page et affiche le curseur brut, et le DynamoDB Expression Builder compose la requête autour.
Interroge dans DynoTable
Pagine une Query dans DynoTable et inspecte le curseur LastEvaluatedKey brut entre deux pages — ouvre la table avec ⌘K, lance une Query, et copie le jeton de pagination tel quel dans ta boucle SDK. Le panneau de requête montre exactement quels attributs de clé DynamoDB attend.
Sers-toi du Query Builder pour générer un programme de Query paginé avec une gestion correcte de l'ExclusiveStartKey. Change de profil avec ⌘P ; Test Connection dans Settings → Profiles. Vois Se connecter à AWS et Installation.
Sources
- Paginating table query results in DynamoDB (vérifié le 2026-07-13)
- Query — Amazon DynamoDB API Reference (vérifié le 2026-07-13)
Erreurs liées
- The provided key element does not match the schema — le même décalage de schéma sur une clé de
GetItem/écriture. - Query key condition not supported
- Exemple de code : Get all items en Node.js · en Python (boto3) — la boucle de pagination LastEvaluatedKey bien faite.
- En savoir plus : Pagination in DynamoDB
Références
- Paginating table query results in DynamoDB — Amazon DynamoDB Developer Guide
- Query — Amazon DynamoDB API Reference
- Scan — Amazon DynamoDB API Reference
Dernière vérification le 2026-07-13 par rapport à la documentation officielle AWS liée ci-dessus.