Obtener todos los items de DynamoDB en Node.js (AWS SDK v3)

En DynamoDB no existe un "select all" — leer una tabla entera significa un Scan que paginas hasta el final. Cada respuesta lleva como máximo 1 MB; iteras, volviendo a alimentar LastEvaluatedKey como ExclusiveStartKey, hasta que no vuelve ninguna clave.

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`);

Explicación

  • El bucle es lo importante — una única llamada a Scan NO devuelve la tabla; devuelve hasta 1 MB. Pararse tras la primera respuesta es el clásico bug de "a mi scan le faltan items". Solo un LastEvaluatedKey ausente significa que lo has leído todo.
  • Memoriaitems contiene la tabla entera. Para tablas grandes, procesa cada página dentro del bucle (escribir a un archivo, hacer streaming, agregar) en lugar de acumular.
  • Más rápido en tablas grandes: scan en paralelo — reparte el trabajo con Segment / TotalSegments: ejecuta N workers, cada uno escaneando su propio segmento con su propio bucle de paginación. El mismo coste total, mucho menos tiempo de reloj.
  • Coste — un scan completo lee (y factura) cada byte de cada item, cada vez que lo ejecutas. Recorta la respuesta con ProjectionExpression (menos atributos devueltos — el coste de lectura se mantiene igual), y no pongas un scan en una ruta caliente; para eso están Query y el diseño de patrones de acceso.
  • ¿Filtrando de paso? Un FilterExpression descarta items después de leerlos (y facturarlos) — consulta Scan con un filtro.

Hazlo visualmente

Echar un vistazo a una tabla no necesita un script: descarga DynoTable para explorar cualquier tabla en una cuadrícula paginada — pagina los scans por ti, sin un bucle que equivocar. Y antes de escanear y pagar, la calculadora de precios de DynamoDB muestra lo que realmente cuesta una lectura completa de tu tabla.

Ejemplos relacionados

References

Verificado por última vez el 2026-07-13 contra la documentación oficial de AWS enlazada arriba.

Construye esta solicitud visualmente

Compón esta operación en el Generador de consultas de DynamoDB gratuito —condición de clave, filtro, índice, Limit, orden de clasificación y un bucle de paginación— y cópiala de vuelta como un programa ejecutable para SDK v3, CLI o boto3.

Abrir el Generador de consultas de DynamoDB

Trabaja con DynamoDB sin la Consola

DynoTable es un cliente de escritorio rápido para DynamoDB: explora tablas, ejecuta consultas estilo SQL y edita Items localmente.