AWS CLI로 DynamoDB의 모든 항목 가져오기

AWS CLI는 페이지네이션을 숨깁니다. aws dynamodb scan은 테이블에 필요한 만큼 1 MB짜리 서비스 호출을 반복하고 합쳐진 결과 하나를 출력하므로, 항목 열 개를 읽는 명령과 천만 개를 읽는 명령이 똑같은 명령입니다.

그것이 편리함이자 함정입니다. 호출 횟수도, 메모리도, 요금도 테이블 크기에 비례해 커지는데 명령줄은 한 줄 그대로입니다.

코드

aws dynamodb scan --table-name 'Music'

합쳐진 출력에는 테이블의 모든 항목이 담깁니다:

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

설명

  • --no-paginate는 단일 호출 스위치입니다 — CLI가 커서를 따라가는 것을 멈추므로 첫 페이지만 얻고 그 이상은 없습니다. 한번 훑어보기에는 괜찮지만 전체 읽기에는 맞지 않습니다(커서의 동작 방식).
  • --page-size는 출력이 아니라 호출 횟수를 바꿉니다 — AWS는 이렇게 분명히 말합니다. "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." 큰 페이지에서 타임아웃이 날 때 쓰는 것이지, 비용을 아끼려고 쓰는 것이 아닙니다. 읽기 비용은 어느 쪽이든 동일합니다.
  • --max-items는 출력이 끝나고 NextToken이 시작되는 지점입니다 — 지정한 개수만큼 항목을 출력하고 --starting-token에 넣을 재개 토큰을 함께 내놓습니다. --page-size와 같은 숫자로 맞추세요. AWS는 값이 다르면 "can get unexpected results with missing or duplicated items"라고 경고합니다.
  • --query는 여러분의 컴퓨터에서 실행됩니다 — 출력된 결과에 대한 JMESPath이며, 모든 항목을 읽고 요금이 청구된 뒤에 적용됩니다. DynamoDB가 보는 것은 --projection-expression(예약어에는 --expression-attribute-names도 함께)이고, 이것은 요금이 아니라 응답 크기를 줄입니다. --filter-expression 역시 항목에 요금이 부과된 뒤에 그것을 버립니다(필터를 사용한 Scan).
  • 모든 것이 버퍼링된 뒤 페이저를 만납니다 — CLI는 출력하기 전에 모든 페이지를 모으고, CLI v2는 기본적으로 macOS와 Linux에서는 less, Windows에서는 more로 결과를 넘깁니다. 큰 테이블에서는 메모리 급증과 멈춘 터미널을 동시에 겪게 됩니다. --no-cli-pager를 추가하거나 AWS_PAGER를 빈 문자열로 설정하고, --max-items로 잘라 쓰세요.
  • 병렬 Scan은 셸에서도 됩니다--segment i --total-segments N으로 N개를 실행하면 각각 자기 몫을 자동으로 페이지네이션합니다. 총비용은 같지만 실제 소요 시간은 훨씬 짧습니다(언제 그럴 가치가 있는지).

시각적으로 해보기

한 줄짜리 명령이 비싼 명령일 수 있습니다. DynamoDB 요금 계산기는 실행하기 전에 테이블 전체 읽기에 붙는 금액을 알려 줍니다.

DynoTable은 터미널 버퍼가 아니라 그리드에서 테이블을 페이지 단위로 넘겨 보여 주고, 그 그리드 뒤의 Scan을 aws dynamodb 명령으로 다시 내보낼 수도 있습니다. DynoTable 다운로드.

관련 예제

참고 자료

위에 링크된 공식 AWS 문서를 기준으로 2026-07-28에 마지막으로 검증했습니다.

이 요청을 시각적으로 만들기

무료 DynamoDB 쿼리 빌더에서 이 작업을 구성하세요 — 키 조건, 필터, 인덱스, Limit, 정렬 순서, 페이지네이션 루프 — 그리고 실행 가능한 SDK v3, CLI, boto3 프로그램으로 다시 복사하세요.

DynamoDB 쿼리 빌더 열기

Console 없이 DynamoDB 작업하기

DynamoDB로는 실행할 수 없는 진짜 SQL(JOINs, GROUP BY, 집계)을 실행하는 빠른 DynamoDB 데스크톱 클라이언트. 시각적 편집과 여러분 자신의 Bedrock 키로 동작하는 AI 에이전트를 제공합니다.

30일 무료 체험, 신용카드 불필요 — 이후 기간 제한 없는 무료 요금제.