AWS CLI로 DynamoDB의 모든 항목 가져오기
DynamoDB에는 "전체 선택"이 없습니다 — 테이블 전체를 읽는다는 것은 페이지네이션되는 Scan을 의미합니다. 좋은 소식: AWS CLI는 자동 페이지네이션을 수행해, 뒤에서 필요한 만큼 1 MB 서비스 호출을 하고 하나의 결합된 결과를 출력합니다.
Code
aws dynamodb scan --table-name 'Music'결합된 출력은 테이블의 모든 항목을 담습니다:
{
"Items": [
{"Artist": {"S": "Arturo Sandoval"}, "SongTitle": {"S": "Cubano Chant"}, ...}
],
"Count": 1287,
"ScannedCount": 1287
}Explanation
- 자동 페이지네이션 — SDK와 달리 CLI는 기본적으로
LastEvaluatedKey를 대신 따라갑니다: 명령 하나로 모든 항목. (--no-paginate는 이를 단일 서비스 호출 — 첫 약 1 MB만 — 로 제한합니다.) - 큰 테이블을 위한 청크 출력 — 전체 테이블이 출력 전에 메모리에 올라오므로, 큰 테이블은 조각으로 읽으세요:
--max-items 1000은 1000개 항목과NextToken을 출력합니다.--starting-token <token>으로 재개하세요. 청크 간 행 누락/중복을 피하려면--page-size를--max-items와 동일하게 유지하세요. - 바이트는 줄지만 청구액은 동일 —
--projection-expression 'Artist, SongTitle'(예약어는--expression-attribute-names와 함께)은 해당 속성만 반환하지만, 스캔은 여전히 읽은 모든 항목의 모든 바이트를 청구합니다. - 큰 테이블에서 더 빠르게: 병렬 스캔 —
--segment i --total-segments N으로 N개의 복사본을 실행하며, 각각 자신의 조각을 자동 페이지네이션합니다. 총비용은 동일하지만 실제 소요 시간은 훨씬 낮습니다. - 하는 김에 필터링도 하시나요?
--filter-expression은 항목을 읽고(청구한) 이후에 걸러냅니다 — 필터를 사용한 Scan을 참고하세요.jq로 파이핑하시나요?--output json을 추가하고 값이 DynamoDB JSON임을 기억하세요.
Do it visually
테이블을 눈으로 훑어보는 데 DynamoDB JSON으로 가득 찬 터미널이 필요하지는 않습니다: DynoTable을 다운로드해 어떤 테이블이든 페이지네이션된 그리드에서 탐색하세요 — 스캔을 대신 페이지네이션합니다. 그리고 스캔하고 비용을 치르기 전에, DynamoDB 요금 계산기가 테이블 전체 읽기의 실제 비용을 보여줍니다.
Related examples
- Get all items in Node.js — 명시적 루프를 사용한 동일한 전체 읽기.
- Get all items in Python — boto3의 페이지네이터를 사용한 동일한 전체 읽기.
- DynamoDB Scan with the AWS CLI —
--filter-expression으로 스캔하기. - 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
- scan — AWS CLI Command Reference
- Using AWS CLI pagination options — AWS CLI User 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.