Récupérer tous les éléments de DynamoDB avec l'AWS CLI

L'AWS CLI cache la pagination. aws dynamodb scan effectue autant d'appels de service de 1 Mo que la table l'exige et imprime un seul résultat combiné : la commande qui lit dix éléments et celle qui en lit dix millions sont la même commande.

C'est là toute la commodité, et tout le piège. Le nombre d'appels, la mémoire et la facture augmentent tous avec la table, alors que la ligne reste une ligne.

Code

aws dynamodb scan --table-name 'Music'

La sortie combinée contient tous les éléments de la table :

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

Explication

  • --no-paginate est l'interrupteur « un seul appel » — il empêche la CLI de suivre le curseur, donc tu obtiens la première page et rien d'autre. Bien pour jeter un œil, faux pour une lecture complète (comment fonctionne le curseur).
  • --page-size change le nombre d'appels, pas la sortie — AWS le dit sans détour : "Changing the page size doesn't affect the output; it affects only the number of API calls that need to be made to generate the output." Sers-t'en quand une grande page expire, jamais pour économiser de l'argent. Le coût de lecture est identique dans les deux cas.
  • --max-items est l'endroit où la sortie s'arrête et où NextToken commence — il imprime ce nombre d'éléments plus un jeton de reprise pour --starting-token. Règle-le sur la même valeur que --page-size : AWS avertit que des valeurs différentes "can get unexpected results with missing or duplicated items".
  • --query s'exécute sur ta machine — c'est du JMESPath sur le résultat imprimé, appliqué après que chaque élément a été lu et facturé. --projection-expression (plus --expression-attribute-names pour les mots réservés) est celle que DynamoDB voit, et elle réduit la réponse, pas la facture. Une --filter-expression écarte elle aussi les éléments après leur facturation (Scan avec un filtre).
  • Tout est mis en tampon, puis rencontre un pager — la CLI accumule toutes les pages avant d'imprimer, et la CLI v2 envoie par défaut le résultat dans less sur macOS et Linux ou more sur Windows. Sur une grande table, c'est à la fois un pic de mémoire et un terminal bloqué. Ajoute --no-cli-pager, ou mets AWS_PAGER à une chaîne vide, et découpe avec --max-items.
  • Le scan parallèle marche aussi depuis le shell — lance N copies avec --segment i --total-segments N, chacune paginant automatiquement sa propre tranche. Même coût total, temps d'exécution bien plus court (quand ça vaut le coup).

Le faire visuellement

Une commande d'une ligne peut être une commande coûteuse. Le calculateur de tarifs DynamoDB met un chiffre sur une lecture complète de ta table avant que tu ne la lances.

DynoTable parcourt la table dans une grille plutôt que dans un tampon de terminal, et exportera le Scan derrière cette grille sous forme de commande aws dynamodb. Télécharge DynoTable.

Exemples liés

Références

Dernière vérification le 2026-07-28 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

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.