Ottenere tutti gli Item da DynamoDB con la AWS CLI

La AWS CLI nasconde la paginazione. aws dynamodb scan fa tutte le chiamate da 1 MB al servizio di cui la tabella ha bisogno e stampa un unico risultato combinato, quindi il comando che legge dieci Item e quello che ne legge dieci milioni sono lo stesso comando.

Questa è la comodità ed è la trappola. Il numero di chiamate, la memoria e la bolletta scalano tutti con la tabella mentre la riga resta una riga.

Codice

aws dynamodb scan --table-name 'Music'

L'output combinato contiene ogni Item della tabella:

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

Spiegazione

  • --no-paginate è l'interruttore a chiamata singola — impedisce alla CLI di seguire il cursore, quindi ottieni la prima pagina e nient'altro. Va bene per un'occhiata, è sbagliato per una lettura completa (come funziona il cursore).
  • --page-size cambia il numero di chiamate, non l'output — AWS lo dice chiaramente: "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." Usalo quando una pagina grande va in timeout, mai per risparmiare denaro. Il costo di lettura è identico in entrambi i casi.
  • --max-items è dove si ferma l'output e inizia NextToken — stampa quel numero di Item più un token di ripresa per --starting-token. Impostalo allo stesso valore di --page-size: AWS avverte che valori diversi "can get unexpected results with missing or duplicated items".
  • --query gira sulla tua macchina — è JMESPath sul risultato stampato, applicato dopo che ogni Item è già stato letto e fatturato. --projection-expression (più --expression-attribute-names per le parole riservate) è quello che DynamoDB vede davvero, e riduce la risposta, non la bolletta. Anche un --filter-expression scarta gli Item dopo che sono stati addebitati (Scan con un filtro).
  • Tutto viene bufferizzato, poi incontra un pager — la CLI accumula ogni pagina prima di stampare, e la CLI v2 manda il risultato attraverso less su macOS e Linux o more su Windows per impostazione predefinita. Su una tabella grande è un picco di memoria e un terminale bloccato allo stesso tempo. Aggiungi --no-cli-pager, oppure imposta AWS_PAGER a stringa vuota, e taglia con --max-items.
  • Anche lo scan parallelo funziona dalla shell — esegui N copie con --segment i --total-segments N, ciascuna che pagina automaticamente la propria fetta. Stesso costo totale, tempo reale molto più basso (quando ne vale la pena).

Fallo visivamente

Un comando su una riga può essere un comando costoso. Il calcolatore dei prezzi DynamoDB mette un numero su una lettura completa della tua tabella prima che tu la esegua.

DynoTable pagina la tabella in una griglia invece che in un buffer di terminale, ed esporta lo Scan dietro quella griglia come comando aws dynamodb. Scarica DynoTable.

Esempi correlati

Riferimenti

Ultima verifica 2026-07-28 rispetto alla documentazione ufficiale AWS collegata sopra.

Costruisci questa richiesta visivamente

Componi questa operazione nel Generatore di query DynamoDB gratuito — condizione di chiave, filtro, indice, Limit, ordine di ordinamento e un loop di paginazione — e copiala come programma eseguibile per SDK v3, CLI o boto3.

Apri il Generatore di query DynamoDB

Lavora con DynamoDB senza la Console

Un client desktop veloce per DynamoDB che esegue il vero SQL che DynamoDB non può — JOINs, GROUP BY, aggregazioni — con modifica visuale e un agente AI sulle tue chiavi Bedrock.

Prova gratuita di 30 giorni, senza carta di credito — poi il piano Free senza limiti di tempo.