Obter todos os itens do DynamoDB em Node.js (AWS SDK v3)

Não existe "select all" no DynamoDB — ler uma tabela inteira significa um Scan que você pagina até o fim. Cada resposta carrega no máximo 1 MB; você faz o loop, alimentando LastEvaluatedKey de volta como ExclusiveStartKey, até nenhuma chave voltar.

Code

import {DynamoDBClient, ScanCommand} from '@aws-sdk/client-dynamodb';

const client = new DynamoDBClient({region: 'us-east-1'});

const items = [];
let lastEvaluatedKey;

do {
  const response = await client.send(
    new ScanCommand({
      TableName: 'Music',
      ExclusiveStartKey: lastEvaluatedKey
    })
  );

  items.push(...(response.Items ?? []));
  lastEvaluatedKey = response.LastEvaluatedKey;
} while (lastEvaluatedKey);

console.log(`Table holds ${items.length} items`);

Explicação

  • O loop é o ponto principal — uma única chamada Scan NÃO retorna a tabela; ela retorna até 1 MB. Parar depois da primeira resposta é o clássico bug de "meu scan está faltando itens". Apenas um LastEvaluatedKey ausente significa que você leu tudo.
  • Memóriaitems guarda a tabela inteira. Para tabelas grandes, processe cada página dentro do loop (grave em um arquivo, transmita, agregue) em vez de acumular.
  • Mais rápido em tabelas grandes: parallel scan — divida o trabalho com Segment / TotalSegments: execute N workers, cada um fazendo scan do seu próprio segmento com seu próprio loop de paginação. Mesmo custo total, muito menos tempo de relógio.
  • Custo — um scan completo lê (e cobra) cada byte de cada item, toda vez que você o executa. Enxugue a resposta com ProjectionExpression (menos atributos retornados — o custo de leitura permanece o mesmo), e não coloque um scan em um caminho quente; é para isso que existem o Query e o design de padrões de acesso.
  • Filtrando de passagem? Uma FilterExpression descarta itens depois de serem lidos (e cobrados) — veja Scan com um filtro.

Faça visualmente

Dar uma olhada em uma tabela não precisa de um script: baixe o DynoTable para navegar em qualquer tabela em uma grade paginada — ele pagina os scans por você, sem loop para errar. E antes de fazer scan e pagar, a calculadora de preços do DynamoDB mostra quanto uma leitura completa da sua tabela realmente custa.

Exemplos relacionados

References

Última verificação em 2026-07-13 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

O DynoTable é um cliente desktop rápido para o DynamoDB — navegue pelas tabelas, execute consultas no estilo SQL e edite itens localmente.