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 une ValidationException.
  • 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": true pour 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

References

Dernière vérification le 2026-07-13 par rapport à la documentation officielle AWS liée ci-dessus.

Travaille avec DynamoDB sans la Console

DynoTable est un client de bureau rapide pour DynamoDB — parcours les tables, exécute des requêtes de style SQL et édite les items en local.