제공된 항목 키 목록에 중복 항목이 포함되어 있습니다(BatchGetItem)
TL;DR — 한 테이블에 대한 BatchGetItem Keys 배열에는 동일한 기본 키가 두 번 이상 나열됩니다. DynamoDB는 배치의 모든 키가 고유해야 하며 전체 요청을 거부합니다. 즉, 속이는 키를 자동으로 삭제하지 않습니다. 보내기 전에 키 목록의 중복을 제거하세요.
무엇을 의미하는가
ValidationException: Provided list of item keys contains duplicatesBatchGetItem은 테이블 전체에서 최대 100개의 항목을 읽습니다. 단일 테이블의 Keys 목록 내에서 각 항목은 고유한 기본 키(파티션 키 또는 복합 테이블의 경우 파티션 + 정렬 키)여야 합니다. 동일한 키로 확인되는 두 항목이 이 HTTP 400ValidationException`를 통과하고 전체 호출이 실패합니다. 항목이 반환되지 않습니다. 현재 상태로는 재시도할 수 없습니다.
왜 발생하는가
- 동일한 키가 목록에 두 번 나타납니다. 이는 ID가 여러 소스에서 수집되어 병합되지 않은 경우가 많기 때문입니다.
- 소스에 중복 행이 있는 생성된 키 목록(예: 레코드 목록을 키에 매핑)
- 복합 키 혼동 — 두 항목이 파티션 키를 공유하지만 정렬 키가 다르다는 사실을 잊었습니다. 또는 둘 다 실제로 동일합니다.
- 실제 중복을 가리는 사례/유형 차이 — 동일한 값으로 마샬링되는 두 개의 키.
- 중복 제거 단계 없이 키를 일괄 처리하는 파이프라인(Glue, 맞춤형 ETL)을 로드합니다.
어떻게 해결하는가
통화 전에 중복을 제거합니다. 안정적인 문자열로 각 항목을 입력하고 다음 중 하나를 유지합니다.
const seen = new Set(); const keys = raw.filter((k) => { const id = `${k.pk.S}#${k.sk?.S ?? ''}`; if (seen.has(id)) return false; seen.add(id); return true; });배치는 가방이 아니라 세트라는 점을 기억하세요 — 키당 한 번의 읽기만 필요합니다. 항목은 관계없이 한 번만 돌아옵니다.
BatchGetItem당 100개 키로 청크하고 응답에서UnprocessedKeys를 처리합니다(중복이 아닌 제한).문제가 업스트림에서 재발되지 않도록 동일한 중복 제거 기능으로 ETL/로더를 보호하세요.
각 배치 전에 키 목록 길이를 기록합니다. 중복 항목이 들어오면 오류로 인해 색인이 제공되지 않습니다. 로그에는 ID를 반복하는 업스트림 소스가 표시되어야 합니다.
DynoTable 경로
프로덕션에서 키를 일괄 읽기 전에 DynoTable에서 중복 항목을 찾아냅니다. ⌘K로 테이블을 열고 가져오려는 ID로 필터링한 다음 각 기본 키가 한 번 나타나는지 확인합니다. 항목 목록에는 파티션 키와 정렬 키가 나란히 표시되므로 복합 키 충돌이 분명합니다.
읽기를 코드로 이동할 때 Query Builder를 사용하여 먼저 단일 키 읽기의 프로토타입을 만든 다음 청크 BatchGetItem로 크기를 조정합니다. ⌘P로 프로필을 전환합니다. 설정 → 프로필에서 연결 테스트를 사용하여 구성합니다. Connect to AWS 및 Install를 참조하세요.
출처
- BatchGetItem — Amazon DynamoDB API Reference (2026-07-13 인증)
- Error handling with DynamoDB (2026-07-13 인증)
관련 오류
- Provided list of item keys contains duplicates (BatchWriteItem) — 쓰기 경로에 대한 동일한 규칙입니다.
- ValidationException (overview)
- 코드 예: BatchGetItem in Node.js — 적응하기 위해 올바른 청크 배치 읽기입니다.
- 학습: Batch operations
참고 자료
- BatchGetItem — Amazon DynamoDB API Reference
- BatchWriteItem — Amazon DynamoDB API Reference
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
위에 링크된 공식 AWS 문서를 기준으로 2026년 7월 13일에 마지막으로 확인되었습니다.