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를 초과하면 전체 배치가 거부됩니다.
어떻게 해결하는가
- 25개 이하 작업 그룹으로 나누고 청크당 하나의
BatchWriteItem를 보냅니다. UnprocessedItems처리 —BatchWriteItem는 처리하지 않은 항목을 반환할 수 있습니다(제한). 지수 백오프를 사용하여 다시 시도하세요. 이는 유효한 25개 항목 배치 내에서도 정상적인 현상입니다.- 각 배치를 16MB 미만으로 유지 — 대용량 항목의 경우 호출당 25개 미만이 필요할 수 있습니다.
- 버퍼링하는 도우미 사용 — boto3의
Table.batch_writer()청크는 처리되지 않은 항목을 자동으로 쓰고 다시 보냅니다(Java SDK의 Enhanced Client/v1 DynamoDBMapper도 처리되지 않은 항목을 재시도합니다). 낮은 수준의 클라이언트와 JavaScript 문서 클라이언트는 크기가 큰 배치를 분할하지 않습니다. - 각 청크의 크기를 바이트 및 개수로 조정합니다. 25개의 대형 항목은 작업 개수가 유효한 경우에도 16MB를 초과할 수 있습니다.
DynoTable에서 측정
데이터를 대량으로 로드하기 전에 DynoTable에서 항목 크기를 무작위로 확인합니다. ⌘K가 있는 샘플 항목을 열고 각각이 400KB 미만인지 확인합니다. item size calculator은 배치 페이로드 크기를 추정하므로 로더가 실행되기 전에 안전한 청크 크기를 선택할 수 있습니다.
전체 가져오기를 실행하기 전에 스테이징(⌘S)을 사용하여 개발 테이블에 대해 소규모 일괄 쓰기를 테스트하세요. ⌘P로 프로필을 전환합니다. 설정 → 프로필에서 연결 테스트를 사용하여 구성합니다. Connect to AWS 및 Install를 참조하세요.
출처
- BatchWriteItem — Amazon DynamoDB API Reference (2026-07-13 인증)
- Amazon DynamoDB — AWS SDK for Python (Boto3) guide (2026-07-13 인증)
관련 오류
- Too many items requested for the BatchGetItem call — 읽기 측 제한(100개 항목).
- Provided list of item keys contains duplicates — 하나의 BatchWriteItem에 동일한 키가 두 번 있습니다.
- ProvisionedThroughputExceededException — UnprocessedItems로 표시되는 제한입니다.
- 코드 예: BatchWriteItem in Node.js · in Python (boto3) — UnprocessedItems를 사용한 청크 쓰기를 다시 시도합니다.
- 학습: DynamoDB batch operations
참고 자료
- BatchWriteItem — Amazon DynamoDB API Reference
- BatchGetItem — Amazon DynamoDB API Reference
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
- Amazon DynamoDB — AWS SDK for Python (Boto3) guide
위에 링크된 공식 AWS 문서를 기준으로 2026년 7월 13일에 마지막으로 확인되었습니다.