Node.js(AWS SDK v3)에서 DynamoDB의 모든 항목 가져오기
DynamoDB에는 "전체 선택"이 없습니다 — 테이블 전체를 읽는다는 것은 **끝까지 페이지네이션하는 Scan**을 의미합니다. 각 응답은 최대 1 MB를 담습니다. 키가 더 이상 반환되지 않을 때까지 LastEvaluatedKey를 ExclusiveStartKey로 다시 전달하며 반복합니다.
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`);Explanation
- 루프가 핵심 — 단일
Scan호출은 테이블을 반환하지 않습니다. 최대 1 MB를 반환할 뿐입니다. 첫 응답 후 멈추는 것이 전형적인 "내 스캔에 항목이 누락됨" 버그입니다.LastEvaluatedKey가 없어야만 모든 것을 다 읽은 것입니다. - 메모리 —
items는 테이블 전체를 담습니다. 큰 테이블의 경우 누적하지 말고 루프 안에서 각 페이지를 처리하세요(파일에 쓰기, 스트리밍, 집계). - 큰 테이블에서 더 빠르게: 병렬 스캔 —
Segment/TotalSegments로 작업을 분할하세요: N개의 워커를 실행하며 각 워커가 자신만의 페이지네이션 루프로 자신의 세그먼트를 스캔합니다. 총비용은 동일하지만 실제 소요 시간은 훨씬 낮습니다. - 비용 — 전체 스캔은 실행할 때마다 모든 항목의 모든 바이트를 읽고(청구합니다).
ProjectionExpression으로 응답을 줄이고(반환되는 속성이 줄어들 뿐 읽기 비용은 동일), 핫 경로에 스캔을 두지 마세요. 그것이 Query와 접근 패턴 설계가 있는 이유입니다. - 하는 김에 필터링도 하시나요?
FilterExpression은 항목을 읽고(청구한) 이후에 걸러냅니다 — 필터를 사용한 Scan을 참고하세요.
Do it visually
테이블을 눈으로 훑어보는 데는 스크립트가 필요 없습니다: DynoTable을 다운로드해 어떤 테이블이든 페이지네이션된 그리드에서 탐색하세요 — 스캔을 대신 페이지네이션하므로 잘못 짤 루프가 없습니다. 그리고 스캔하고 비용을 치르기 전에, DynamoDB 요금 계산기가 테이블 전체 읽기의 실제 비용을 보여줍니다.
Related examples
- Get all items in Python — boto3의 페이지네이터를 사용한 동일한 전체 읽기.
- Get all items with the AWS CLI — CLI가 대신 페이지네이션합니다.
- DynamoDB Scan in Node.js —
FilterExpression으로 스캔하기. - Parallel scans — Segment/TotalSegments, 워커 수, 그리고 언제 신경 쓸지.
- Why is my DynamoDB Scan slow and expensive? — 비용 모델과 이를 피하는 방법.
- DynamoDB ProvisionedThroughputExceededException — 테이블 전체를 읽는 것이 이를 겪는 전형적인 방법.
- "The provided starting key is invalid" — 페이지네이션 루프에서 망가진 재개 키.
References
- Scan — Amazon DynamoDB API Reference
- Scanning tables in DynamoDB — Amazon DynamoDB Developer Guide
- DynamoDB read and write operations (capacity unit consumption) — Amazon DynamoDB Developer Guide
Last verified 2026-07-13 against the official AWS documentation linked above.