DynamoDB ItemCollectionSizeLimitExceededException

TL;DR — LSI(Local Secondary Index)가 있는 테이블에만 이 제한이 있습니다. 하나의 파티션 키("항목 컬렉션")를 공유하는 모든 항목의 총 크기는 최대 10GB입니다. 파티션 키 중 하나가 이를 초과했습니다. 단일 파티션 키에 제한되지 않은 데이터가 누적되지 않도록 재설계하거나 LSI를 삭제하세요.

무엇을 의미하는가

ItemCollectionSizeLimitExceededException: Collection size exceeded.

항목 컬렉션은 모든 LSI의 기본 테이블 _및_에서 동일한 파티션 키 값을 가진 모든 항목입니다. LSI가 없는 테이블에는 컬렉션별 크기 제한이 없습니다(테이블의 전체 크기는 제한되지 않습니다). LSI가 있는 테이블은 각 컬렉션을 10GB로 제한하며, 이 오류는 쓰기로 인해 하나의 컬렉션이 그 이상으로 푸시된다는 의미입니다. 글로벌 보조 인덱스에는 이 제한이 적용되지 않습니다.

HTTP 400으로 다시 표시되고 AWS는 이를 재시도 가능으로 표시합니다. 그러나 재시도는 컬렉션이 10GB 미만으로 줄어든 후에만 성공합니다. 컬렉션의 크기를 줄이는 읽기 및 쓰기(속성 삭제, 제거 또는 트리밍)는 계속 허용되므로 문제를 해결할 수 있습니다.

왜 발생하는가

  • 핫/무제한 파티션 키 — 하나의 키(큰 테넌트, 인기 있는 사용자)는 다른 키보다 훨씬 많은 항목을 축적합니다.
  • 필요하지 않을 수도 있는 LSI — 테이블에 LSI가 있기 때문에_만_ 10GB 제한이 존재합니다.
  • 시간이 지남에 따라 단일 파티션 키 아래의 추가 전용 증가입니다.

어떻게 해결하는가

  1. 파티션 키를 다시 샤딩합니다. 단일 컬렉션이 무제한으로 커지지 않도록 여러 파티션 키(예: TENANT#42#1, TENANT#42#2)로 크기가 큰 엔터티를 분할합니다.
  2. LSI를 GSI로 교체합니다. GSI에는 자체 파티션 키가 있고 항목 수집 크기 제한이 없습니다. 대부분의 액세스 패턴에서는 어쨌든 GSI가 더 나은 선택입니다(그리고 LSI와 달리 테이블 생성 후에 추가/제거될 수 있습니다).
  3. 핫 컬렉션에서 콜드 항목을 보관합니다(별도의 테이블 또는 S3에).
  4. 벽에 부딪히기 전에 컬렉션 크기를 모니터링하세요. 쓰기에 대한 ReturnItemCollectionMetrics: SIZE는 예상 컬렉션 크기를 반환하므로 쓰기가 실패하기 전에 경고할 수 있습니다.

DynoTable에서 찾기

컬렉션이 10GB에 도달하기 전에 어떤 파티션 키가 가장 많은 항목을 담고 있는지 찾아보세요. ⌘K로 테이블을 열고, 파티션 키로 정렬하고, 비정상적으로 긴 항목 목록이 있는 키를 검색하세요. item size calculator는 재샤딩을 계획할 때 항목당 증가를 예측하는 데 도움이 됩니다.

pricing calculator를 사용하여 LSI 쓰기 증폭을 GSI 대안과 비교합니다. ⌘P로 프로필을 전환합니다. 설정 → 프로필에서 구성하세요. Connect to AWSInstall를 참조하세요.

출처

관련 오류

참고 자료

위에 링크된 공식 AWS 문서를 기준으로 2026년 7월 13일에 마지막으로 확인되었습니다.

Console 없이 DynamoDB 작업하기

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

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