Obter todos os itens do DynamoDB com a AWS CLI

A AWS CLI esconde a paginação. O aws dynamodb scan faz quantas chamadas de 1 MB o serviço exigir para a tabela e imprime um resultado combinado, então o comando que lê dez itens e o comando que lê dez milhões são o mesmo comando.

Essa é a conveniência e a armadilha. A contagem de chamadas, a memória e a conta escalam todas com a tabela, enquanto a linha continua sendo uma linha só.

Código

aws dynamodb scan --table-name 'Music'

A saída combinada contém todos os itens da tabela:

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

Explicação

  • --no-paginate é a chave de chamada única — ela impede que a CLI siga o cursor, então você recebe a primeira página e nada mais. Serve para dar uma olhada, mas está errada para uma leitura completa (como o cursor funciona).
  • --page-size muda a contagem de chamadas, não a saída — a AWS diz sem rodeios: "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." Recorra a ela quando uma página grande der timeout, nunca para economizar dinheiro. O custo de leitura é idêntico de qualquer jeito.
  • --max-items é onde a saída para e o NextToken começa — ela imprime essa quantidade de itens mais um token de retomada para o --starting-token. Defina-a e ao --page-size o mesmo número: a AWS avisa que valores diferentes "can get unexpected results with missing or duplicated items".
  • --query roda na sua máquina — é JMESPath sobre o resultado impresso, aplicado depois de cada item já ter sido lido e cobrado. O --projection-expression (mais --expression-attribute-names para palavras reservadas) é o que o DynamoDB enxerga, e ele encolhe a resposta, não a conta. Uma --filter-expression também descarta itens depois de eles serem cobrados (Scan com filtro).
  • Tudo é bufferizado e depois encontra um pager — a CLI acumula todas as páginas antes de imprimir, e a CLI v2 manda o resultado pelo less no macOS e no Linux, ou pelo more no Windows, por padrão. Em uma tabela grande isso é um pico de memória e um terminal travado ao mesmo tempo. Adicione --no-cli-pager, ou defina AWS_PAGER como string vazia, e fatie com --max-items.
  • O scan paralelo também funciona a partir do shell — rode N cópias com --segment i --total-segments N, cada uma paginando automaticamente a sua própria fatia. Mesmo custo total, tempo de relógio muito menor (quando vale a pena).

Faça isso visualmente

Um comando de uma linha pode ser um comando caro. A calculadora de preços do DynamoDB coloca um número em uma leitura completa da sua tabela antes de você rodá-la.

O DynoTable pagina a tabela em uma grade em vez de um buffer de terminal, e exporta o Scan por trás dessa grade de volta como um comando aws dynamodb. Baixe o DynoTable.

Exemplos relacionados

Referências

Verificado pela última vez em 2026-07-28 contra a documentação oficial da AWS vinculada acima.

Monte esta solicitação visualmente

Componha esta operação no Construtor de Consultas do DynamoDB gratuito — key condition, filtro, índice, Limit, ordem de classificação e um laço de paginação — e copie de volta como um programa executável para SDK v3, CLI ou boto3.

Abrir o Construtor de Consultas do DynamoDB

Trabalhe com o DynamoDB sem o Console

Um cliente desktop rápido para DynamoDB que roda o SQL de verdade que o DynamoDB não consegue — JOINs, GROUP BY, agregações — com edição visual e um agente de IA com suas próprias chaves do Bedrock.

Teste grátis de 30 dias, sem cartão de crédito — depois o plano Grátis sem limite de tempo.