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 dansjqé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.cmdet PowerShell sur Windows suivent d'autres règles ; mets la clé dans un fichier et passe--key file://key.jsonplutôt que de te battre avec eux. --queryn'est pas--projection-expression—--queryest du JMESPath, appliqué sur ta machine après que l'élément a été lu et facturé.--projection-expressionest celle que DynamoDB voit. Aucune des deux ne réduit le coût de lecture (pourquoi).- Les alias
#proj0sont obligatoires, pas stylistiques —Yearfigure 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 TOTALet la réponse gagne un blocConsumedCapacity. 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
lesssur macOS et Linux (avec les flagsFRX) ou parmoresur Windows. Dans un script, c'est rarement ce que tu veux : passe--no-cli-pager, ou metsAWS_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
- Query vs Scan — quand un simple
get-itembat unequery. - Comment fonctionnent les clés de partition DynamoDB — pourquoi
get-itema besoin de la clé complète. - DynamoDB ResourceNotFoundException — la première erreur habituelle ici : mauvais nom de table ou mauvaise région.
- "The provided key element does not match the schema" — la clé que tu passes ne correspond pas au schéma de clé de la table.
Références
- GetItem — Amazon DynamoDB API Reference
- get-item — AWS CLI Command Reference
- Read consistency — Amazon DynamoDB Developer Guide
- Using the pagination options in the AWS CLI (client-side pager) — AWS CLI User Guide
Dernière vérification le 2026-07-28 par rapport à la documentation officielle AWS liée ci-dessus.