DynamoDB BatchGetItem avec l'AWS CLI
aws dynamodb batch-get-item récupère jusqu'à 100 éléments par clé primaire en une seule commande (16 Mo max). Les clés vont dans --request-items sous forme de carte table → clés en DynamoDB JSON — et tu dois vérifier UnprocessedKeys dans la sortie, car un lot peut légitimement ne renvoyer qu'une partie de ce que tu as demandé.
Code
aws dynamodb batch-get-item \
--request-items '{
"Music": {
"Keys": [
{"Artist": {"S": "Arturo Sandoval"}, "SongTitle": {"S": "Cubano Chant"}},
{"Artist": {"S": "Arturo Sandoval"}, "SongTitle": {"S": "A Mis Abuelos"}},
{"Artist": {"S": "Ella Fitzgerald"}, "SongTitle": {"S": "Misty"}}
]
}
}'La sortie associe chaque table aux éléments trouvés, plus les éventuels restes :
{
"Responses": {
"Music": [
{"Artist": {"S": "Arturo Sandoval"}, "SongTitle": {"S": "Cubano Chant"}, ...}
]
},
"UnprocessedKeys": {}
}Explication
--request-items— une carte nom de table →{"Keys": [...]}; une commande peut couvrir plusieurs tables. Chaque clé doit être la clé primaire complète (partition + tri pour une clé composite). Plus de 100 clés, ou la même clé deux fois, échoue avec uneValidationException.Responses— les éléments reviennent dans aucun ordre particulier, et les clés qui n'existent pas n'apparaissent tout simplement pas — associe les résultats aux requêtes par leurs attributs de clé.UnprocessedKeys— contrairement àquery/scan, la CLI ne relance pas automatiquement un lot partiel (ce n'est pas un jeton de pagination). Si la carte n'est pas vide — limitation de débit, une réponse >16 Mo — relance la commande avec cette carte exacte comme--request-items(elle est déjà au bon format), en espaçant les tentatives.- Par table tu peux ajouter
"ProjectionExpression": "..."(avec"ExpressionAttributeNames") pour ne récupérer que certains attributs, et"ConsistentRead": truepour des lectures fortement cohérentes — les lectures par lot sont à terme par défaut. - Astuce : pour plus de quelques clés, garde la carte dans un fichier et passe
--request-items file://keys.json.
À faire visuellement
Écrire du DynamoDB JSON imbriqué entre guillemets shell est source d'erreurs. Le DynamoDB Expression Builder construit des cartes clé/valeur typées et copie des commandes CLI prêtes à l'emploi.
Pour récupérer et inspecter des éléments sur plusieurs tables dans une interface graphique — sans échappement JSON, sans comptabilité de relance — télécharge DynoTable.
Exemples liés
- DynamoDB BatchGetItem en Node.js — la même lecture par lot avec l'AWS SDK v3.
- DynamoDB BatchGetItem en Python — la même lecture par lot avec boto3.
- DynamoDB GetItem avec l'AWS CLI — la lecture d'un seul élément que ceci regroupe en lot.
- Opérations par lot dans DynamoDB — limites, échec partiel, et quand le regroupement en lot est payant.
- "Too many items requested for the BatchGetItem call" — plus de 100 clés dans une seule requête.
- "Provided list of item keys contains duplicates" — la même clé deux fois dans un seul lot.
References
- BatchGetItem — Amazon DynamoDB API Reference
- batch-get-item — AWS CLI Command Reference
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
Dernière vérification le 2026-07-13 par rapport à la documentation officielle AWS liée ci-dessus.