Interroger un GSI DynamoDB avec l'AWS CLI

Interroger un index secondaire global est un aws dynamodb query normal plus un drapeau : --index-name. La condition de clé cible alors les clés de l'index, pas celles de la table — ici AlbumTitle-index nous permet de récupérer les chansons par album, un schéma d'accès que la table de base (Artist + SongTitle) ne peut pas servir sans un scan.

Code

aws dynamodb query \
  --table-name 'Music' \
  --index-name 'AlbumTitle-index' \
  --key-condition-expression '#hashKey = :hashKeyValue' \
  --expression-attribute-names '{"#hashKey":"AlbumTitle"}' \
  --expression-attribute-values '{":hashKeyValue":{"S":"Danzon"}}'

La sortie correspond aux éléments trouvés en DynamoDB JSON :

{
    "Items": [
        {"Artist": {"S": "Arturo Sandoval"}, "SongTitle": {"S": "Cubano Chant"}, ...}
    ],
    "Count": 2,
    "ScannedCount": 2
}

Explication

  • --index-name — nomme le GSI à interroger (--table-name reste obligatoire). La --key-condition-expression utilise la clé de partition (et de tri optionnelle) de l'indexAlbumTitle ici — avec les mêmes opérateurs qu'une requête sur table.
  • Cohérence à terme uniquement — les GSI se répliquent depuis la table de base de façon asynchrone. Ajouter --consistent-read à une requête sur GSI ne l'améliore pas ; elle échoue avec une ValidationException. (Les index secondaires locaux, eux, prennent en charge la forte cohérence.)
  • Tu n'obtiens que les attributs projetés — une requête sur GSI renvoie ce que l'index projette (attributs ALL, KEYS_ONLY, ou listés dans INCLUDE) et ne peut pas récupérer le reste depuis la table de base.
  • Les clés ne sont pas uniques dans un GSI — de nombreux éléments peuvent partager la même clé d'index, et les éléments qui n'ont pas l'attribut de clé d'index n'apparaissent tout simplement pas (c'est le motif d'index clairsemé).
  • La pagination est automatique — la CLI suit les jetons de pagination du service en coulisses et affiche le résultat combiné. Utilise --max-items pour plafonner la sortie (un NextToken apparaît ; reprends avec --starting-token), ou --no-paginate pour un seul appel de service.

À faire visuellement

Le DynamoDB Expression Builder construit la condition de clé + les cartes de noms/valeurs pour les requêtes sur index et te remet une commande CLI prête à l'emploi.

Pour parcourir les index d'une table et exécuter des requêtes sur GSI depuis un formulaire — grille paginée, copie en tant que CLI — 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.

Construis cette requête visuellement

Compose cette opération dans le Générateur de requêtes DynamoDB gratuit — condition de clé, filtre, index, Limit, ordre de tri et boucle de pagination — et copie-la en retour comme programme exécutable SDK v3, CLI ou boto3.

Ouvrir le Générateur de requêtes DynamoDB

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.