BatchWriteItem 호출에 요청된 항목이 너무 많습니다.

TL;DR — BatchWriteItem은 호출당 최대 25개의 넣기/삭제 작업을 허용합니다(총 16MB 이하). 25개가 넘는 요청을 보냈으므로 DynamoDB가 전체 요청을 거부했습니다. 아이템을 25개 이하의 청크로 나누고 청크당 하나의 BatchWriteItem를 발행하십시오.

무엇을 의미하는가

ValidationException: 1 validation error detected: Value '<your request>' at 'requestItems' failed to satisfy constraint: Map value must satisfy constraint: [Member must have length less than or equal to 25, Member must have length greater than or equal to 1]

# on DynamoDB Local the same call is rejected with a shorter sentence:
ValidationException: Too many items requested for the BatchWriteItem call

이 서비스는 <your request>가 있는 일련화된 요청 전체를 반영합니다(26개 항목 배치에 대해 약 12,000자).

BatchWriteItem은 하나 이상의 테이블에 개별 PutRequest/DeleteRequest 작업을 일괄 처리하지만 단일 호출은 25개 작업16MB 데이터로 제한됩니다. 두 가지 한도를 넘으면 DynamoDB는 내용을 작성하기 전에 전체 요청을 거부합니다. 이는 클라이언트측 HTTP 400ValidationException이며 배치 크기를 조정할 때까지 재시도할 수 없습니다.

왜 발생하는가

  • 한 번의 호출로 대규모 컬렉션 작성 — 수백 개의 항목 배열을 청크 없이 BatchWriteItem에 바로 전달합니다.
  • 바운드가 잘못된 청크 루프 — 개수별로 일괄 처리하지만 25보다 큰 제한을 사용하거나 26개를 허용하는 오프 바이 원(off-by-one)을 사용합니다.
  • 작업이 아닌 테이블 계산 — 25개 제한은 테이블당이 아닌 요청의 모든 테이블에 대한 총 작업 수입니다.
  • 오버사이즈 페이로드 — 작업 수가 25개 이하인 경우에도 단일 항목이 400KB를 초과하거나 총 요청이 16MB를 초과하면 전체 배치가 거부됩니다.

어떻게 해결하는가

  1. 25개 이하 작업 그룹으로 나누고 청크당 하나의 BatchWriteItem를 보냅니다.
  2. UnprocessedItems 처리 — BatchWriteItem는 처리하지 않은 항목을 반환할 수 있습니다(제한). 지수 백오프를 사용하여 다시 시도하세요. 이는 유효한 25개 항목 배치 내에서도 정상적인 현상입니다.
  3. 각 배치를 16MB 미만으로 유지 — 대용량 항목의 경우 호출당 25개 미만이 필요할 수 있습니다.
  4. 버퍼링하는 도우미 사용 — boto3의 Table.batch_writer() 청크는 처리되지 않은 항목을 자동으로 쓰고 다시 보냅니다(Java SDK의 Enhanced Client/v1 DynamoDBMapper도 처리되지 않은 항목을 재시도합니다). 낮은 수준의 클라이언트와 JavaScript 문서 클라이언트는 크기가 큰 배치를 분할하지 않습니다.
  5. 각 청크의 크기를 바이트 및 개수로 조정합니다. 25개의 대형 항목은 작업 개수가 유효한 경우에도 16MB를 초과할 수 있습니다.

DynoTable에서 측정

데이터를 대량으로 로드하기 전에 DynoTable에서 항목 크기를 무작위로 확인합니다. ⌘K가 있는 샘플 항목을 열고 각각이 400KB 미만인지 확인합니다. item size calculator은 배치 페이로드 크기를 추정하므로 로더가 실행되기 전에 안전한 청크 크기를 선택할 수 있습니다.

전체 가져오기를 실행하기 전에 스테이징(⌘S)을 사용하여 개발 테이블에 대해 소규모 일괄 쓰기를 테스트하세요. ⌘P로 프로필을 전환합니다. 설정 → 프로필에서 연결 테스트를 사용하여 구성합니다. Connect to AWSInstall를 참조하세요.

출처

관련 오류

참고 자료

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

Console 없이 DynamoDB 작업하기

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

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