GetItem DynamoDB avec l'AWS CLI

Dans la CLI, la clé est une chaîne DynamoDB JSON, chaque valeur enveloppée avec son type ({"S": "..."}, {"N": "..."}), ce qui fait que l'essentiel de la difficulté d'un aws dynamodb get-item tient au quoting du shell plutôt qu'à DynamoDB. La clé, elle, doit toujours être la clé primaire complète.

Code

aws dynamodb get-item \
  --table-name 'Music' \
  --key '{"Artist":{"S":"Arturo Sandoval"},"SongTitle":{"S":"Cubano Chant"}}' \
  --projection-expression '#proj0, #proj1, #proj2, #proj3' \
  --expression-attribute-names '{"#proj0":"Artist","#proj1":"SongTitle","#proj2":"AlbumTitle","#proj3":"Year"}'

La réponse affiche l'élément en DynamoDB JSON :

{
  "Item": {
    "Artist": {"S": "Arturo Sandoval"},
    "SongTitle": {"S": "Cubano Chant"},
    "AlbumTitle": {"S": "Danzon"},
    "Year": {"N": "1994"}
  }
}

Explication

  • Une absence de correspondance n'affiche strictement rien — pas d'Item, pas d'objet vide, code de sortie 0. Envoyer ça directement dans jq échoue sur une entrée vide : capture la sortie et teste la chaîne avant de l'analyser.
  • Le quoting est le vrai travail — mets le JSON entre guillemets simples sur bash et zsh pour que $ et ! restent littéraux. cmd et PowerShell sur Windows suivent d'autres règles ; mets la clé dans un fichier et passe --key file://key.json plutôt que de te battre avec eux.
  • --query n'est pas --projection-expression--query est du JMESPath, appliqué sur ta machine après que l'élément a été lu et facturé. --projection-expression est celle que DynamoDB voit. Aucune des deux ne réduit le coût de lecture (pourquoi).
  • Les alias #proj0 sont obligatoires, pas stylistiquesYear figure sur la liste des mots réservés d'AWS, et le nommer directement dans une projection est refusé.
  • Demande ce que ça a coûté — ajoute --return-consumed-capacity TOTAL et la réponse gagne un bloc ConsumedCapacity. Pour cet élément, sous 4 Ko, ça donne 0,5 unité de capacité, ou 1,0 dès que tu ajoutes --consistent-read (le compromis).
  • La CLI v2 pagine ta sortie — par défaut, tout passe par less sur macOS et Linux (avec les flags FRX) ou par more sur Windows. Dans un script, c'est rarement ce que tu veux : passe --no-cli-pager, ou mets AWS_PAGER à la chaîne vide.

Le faire visuellement

Taper à la main ce pavé --key est là où part le temps. Le DynamoDB Expression Builder construit le DynamoDB JSON et les maps d'alias à partir d'un formulaire, puis te rend une commande aws dynamodb prête à exécuter.

DynoTable fait la même chose sur une vraie table : parcours les lignes dans une grille, puis exporte la requête qui les produit sous forme de commande CLI. Télécharge DynoTable.

Guides liés

Références

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

Travaille avec DynamoDB sans la Console

Un client de bureau rapide pour DynamoDB qui exécute le vrai SQL que DynamoDB ne peut pas — JOINs, GROUP BY, agrégations — avec édition visuelle et un agent IA sur tes propres clés Bedrock.

Essai gratuit de 30 jours, sans carte bancaire — ensuite la formule Gratuit, sans limite de durée.