AWS CLI를 사용한 DynamoDB BatchGetItem

aws dynamodb batch-get-item은 단일 명령으로 기본 키로 최대 100개 항목을 가져옵니다(최대 16 MB). 키는 DynamoDB JSON으로 된 테이블 → 키의 맵으로 --request-items에 들어가며, 배치가 요청한 것의 일부만 정당하게 반환할 수 있으므로 출력에서 UnprocessedKeys를 확인해야 합니다.

Code

aws dynamodb batch-get-item \
  --request-items '{
    "Music": {
      "Keys": [
        {"Artist": {"S": "Arturo Sandoval"}, "SongTitle": {"S": "Cubano Chant"}},
        {"Artist": {"S": "Arturo Sandoval"}, "SongTitle": {"S": "A Mis Abuelos"}},
        {"Artist": {"S": "Ella Fitzgerald"}, "SongTitle": {"S": "Misty"}}
      ]
    }
  }'

출력은 각 테이블을 발견된 항목에 매핑하고, 남은 것도 함께 보여줍니다:

{
    "Responses": {
        "Music": [
            {"Artist": {"S": "Arturo Sandoval"}, "SongTitle": {"S": "Cubano Chant"}, ...}
        ]
    },
    "UnprocessedKeys": {}
}

Explanation

  • --request-items — 테이블 이름 → {"Keys": [...]}의 맵입니다. 하나의 명령이 여러 테이블에 걸칠 수 있습니다. 모든 키는 전체 기본 키(복합 키의 경우 파티션 + 정렬)여야 합니다. 100개를 초과하는 키나 동일한 키가 두 번 있으면 ValidationException으로 실패합니다.
  • Responses — 항목은 특정 순서 없이 반환되며, 존재하지 않는 키는 단순히 나타나지 않습니다 — 키 속성으로 결과를 요청과 매칭하세요.
  • UnprocessedKeysquery/scan과 달리 CLI는 부분 배치를 자동 재시도하지 않습니다(페이지네이션 토큰이 아닙니다). 맵이 비어 있지 않으면 — 스로틀링, 16 MB를 넘는 응답 — 그 정확한 맵을 --request-items로 하여 명령을 다시 실행하고(이미 올바른 형태입니다), 시도 사이에 백오프하세요.
  • 테이블별로 일부 속성만 가져오도록 "ProjectionExpression": "..."(과 "ExpressionAttributeNames")을, 강력한 일관성 읽기를 위해 "ConsistentRead": true를 추가할 수 있습니다 — 배치 읽기는 기본적으로 최종적 일관성을 따릅니다.
  • 팁: 키가 몇 개를 넘으면 맵을 파일에 두고 --request-items file://keys.json으로 전달하세요.

Do it visually

셸 인용부호 안에서 중첩된 DynamoDB JSON을 손으로 작성하는 것은 오류가 나기 쉽습니다. DynamoDB Expression Builder는 타입 지정 키/값 맵을 만들고 바로 실행 가능한 CLI 명령을 복사해 줍니다.

GUI에서 여러 테이블에 걸쳐 항목을 가져오고 검사하려면 — JSON 이스케이프 없이, 재실행 관리 없이 — DynoTable을 다운로드하세요.

References

Last verified 2026-07-13 against the official AWS documentation linked above.

Console 없이 DynamoDB 작업하기

DynoTable은 DynamoDB를 위한 빠른 데스크톱 클라이언트입니다 — 테이블을 탐색하고, SQL 스타일 쿼리를 실행하고, 항목을 로컬에서 편집하세요.