DynamoDB LSI 항목 수집 10GB 제한
TL;DR — 로컬 보조 인덱스가 있는 테이블에서 item 컬렉션(하나의 파티션 키를 공유하는 모든 항목과 해당 LSI 프로젝션)의 총 크기는 최대 10GB입니다. 각 항목 컬렉션이 단일 파티션에 맞아야 하기 때문에 LSI 테이블에만 이 한도가 있습니다. 10GB를 초과하는 컬렉션을 푸시하는 쓰기는 ItemCollectionSizeLimitExceededException로 실패합니다. ItemCollectionMetrics을 모니터링하거나, 증가하는 키를 다시 샤딩하거나, LSI를 GSI(해당 제한이 없음)로 교체하세요.
무엇을 의미하는가
ItemCollectionSizeLimitExceededException: Collection size exceeded.항목 컬렉션은 테이블과 모든 LSI에서 동일한 파티션 키 값을 가진 모든 항목의 집합입니다. 테이블에 LSI가 있는 경우 DynamoDB는 각 항목 컬렉션을 단일 파티션에 저장하므로 컬렉션은 해당 파티션의 10GB 용량으로 제한됩니다. LSI가 없는 테이블에는 컬렉션당 크기 제한이 없습니다(그리고 GSI에도 제한이 없습니다). 따라서 이 오류는 LSI에서 한 파티션 키의 데이터가 무제한으로 증가했다는 신호입니다. HTTP 400입니다. AWS는 이를 재시도 가능으로 표시하지만 컬렉션이 축소된 후에만 재시도가 성공합니다. 읽기 및 크기를 줄이는 쓰기(삭제, 속성 트리밍)는 계속 허용됩니다.
왜 발생하는가
- 제한되지 않은 파티션 키 — 대규모 테넌트, 바쁜 사용자 또는 추가 전용 로그가 모두 하나의 키 아래에 기록됩니다.
- LSI 자체 — 테이블에 LSI(테이블 생성 시 생성되며 제거할 수 없음)가 있기 때문에 10GB 제한이 만 존재합니다.
- 와이드 LSI 프로젝션 — 많은 속성을 LSI에 프로젝션하면 컬렉션이 더 빠르게 확장됩니다.
- 쓰기가 마침내 10GB를 넘을 때까지 조용히 10GB에 접근하는 꾸준한 성장.
어떻게 해결하는가
- 파티션 키를 다시 샤딩합니다. 크기가 큰 엔터티를 여러 키(
TENANT#42#1,TENANT#42#2, …)로 분할하여 단일 컬렉션이 제한 없이 커지지 않도록 합니다. - LSI를 GSI로 교체합니다. GSI에는 자체 파티션 키가 있고 항목 수집 크기 제한이 없습니다. 대부분의 액세스 패턴의 경우 GSI가 더 적합하며 테이블 생성 후에 추가/제거할 수 있습니다(LSI는 불가능함).
- LSI 예측 다듬기 — LSI를 유지해야 하는 경우 컬렉션 증가를 늦추기 위해 더 적은 수의 속성(
KEYS_ONLY/INCLUDE)을 계획합니다. - 핫 컬렉션의 콜드 항목을 별도의 테이블이나 S3에 보관합니다.
- 벽에 부딪히기 전에 모니터링하세요. 쓰기 시
ReturnItemCollectionMetrics: SIZE를 설정합니다(PutItem,UpdateItem,DeleteItem,BatchWriteItem,TransactWriteItems). DynamoDB는SizeEstimateRangeGB추정치를 반환하며, AWS는 사용자 정의 임계값(예: 8GB)에서 경고할 것을 권장하므로 10GB 이전에 조치를 취해야 합니다.
DynoTable에서
10GB에 가까운 파티션 키를 찾습니다. ⌘K로 테이블을 열고, 파티션 키별로 정렬하고, 컬렉션당 항목 수를 계산합니다. item size calculator은 광범위한 LSI 전망이 컬렉션을 부풀릴 때 성장을 추정합니다.
pricing calculator를 사용하여 GSI 마이그레이션과 LSI 쓰기 비용을 비교하세요. ⌘P로 프로필을 전환합니다. Connect to AWS 및 Install를 참조하세요.
출처
- Local secondary indexes (2026-07-13 인증)
- PutItem — Amazon DynamoDB API Reference (2026-07-13 인증)
관련 오류
- ItemCollectionSizeLimitExceededException — 동일한 예외, 일반 용량 프레임.
- Item size has exceeded the maximum allowed size — 별도의 항목당 400KB 한도입니다.
- 학습: Item collections · GSI vs LSI · Indexes overview
참고 자료
- Local secondary indexes — Amazon DynamoDB Developer Guide
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
- Quotas in Amazon DynamoDB — Amazon DynamoDB Developer Guide
- PutItem — Amazon DynamoDB API Reference
위에 링크된 공식 AWS 문서를 기준으로 2026년 7월 13일에 마지막으로 확인되었습니다.