DynamoDB의 최대 항목 크기는 얼마인가요?
400 KB입니다. DynamoDB의 최대 항목 크기는 400 KB입니다. 그 합계는 속성 이름(UTF-8 바이트 길이)과 중첩된 list 및 map을 포함한 모든 속성 값(바이너리 길이)을 함께 셉니다. 바이너리 값은 원시 바이트 길이로 측정됩니다. 이 한도를 올릴 방법은 없습니다 — 더 큰 객체는 Amazon S3에 두어야 합니다.
400 KB에 포함되는 것
항목 크기는 다음의 합입니다:
- 모든 속성 이름, UTF-8 바이트로 측정,
- 모든 속성 값, 바이너리 길이로 측정(문자열은 UTF-8, 숫자는 압축된 형태, 바이너리는 원시 바이트).
중첩된 map과 list 구조에도 원소마다 작은 오버헤드가 붙습니다. 긴 속성 이름은 실제 공간을 잡아먹습니다 — 자리를 아끼려면 짧게 하세요.
400 KB는 409,600바이트이고, 이름도 그 일부입니다
AWS는 바이너리 단위로 측정합니다: "DynamoDB denotes 1 KB = 1024 bytes." 그래서 천장은 400,000이 아니라 409,600바이트입니다. 문자열 속성 하나로 PutItem을 이진 탐색하면 정확한 경계를 찾을 수 있습니다:
await client.send(
new PutItemCommand({
TableName: 'sizes',
Item: {pk: {S: 'A'}, a: {S: 'x'.repeat(n)}}
})
);성공하는 가장 큰 n은 409,596입니다. 키 이름(pk, 2바이트), 키 값(A, 1바이트), 속성 이름(a, 1바이트)을 더하면 정확히 409,600에 도달합니다. 한 바이트만 더 넣으면:
ValidationException: Item size has exceeded the maximum allowed size
HTTP 400이제 그 속성 이름을 a에서 attributeName으로 바꾸고 나머지는 그대로 두세요. 들어가는 가장 큰 값이 409,584로, 정확히 12바이트 줄어드는데 그 12바이트가 바로 이름이 길어진 만큼입니다.
AWS 자신의 권고가 그 산수에서 따라 나옵니다. "We recommend that you choose shorter attribute names rather than long ones."
속성이 많은 항목에서 400 KB 예산이 보이는 것보다 빡빡한 이유이기도 합니다. 모든 이름은 모든 쓰기에서, 그리고 모든 읽기에서, 그 항목이 사는 내내 비용을 치릅니다.
왜 중요한가
항목 크기가 용량 비용을 좌우합니다. 읽기는 4 KB 단위로, 쓰기는 1 KB 단위로 청구됩니다(용량 단위 참조). 항목이 클수록 작업당 비용이 늘고 하드 한도에 부딪힐 위험도 커집니다.
한도에 부딪혔을 때
데이터를 여러 항목으로 쪼개거나, 큰 blob을 Amazon S3로 옮기고 DynamoDB에는 참조를 저장하세요.
더 알아보기
항목 크기 계산기로 항목을 측정하고 항목 크기 한도 가이드를 읽어 보세요. 편집하면서 항목 크기를 보려면 DynoTable을 다운로드하세요.
참고 자료
- Constraints in Amazon DynamoDB — Amazon DynamoDB Developer Guide
- DynamoDB item sizes and formats — Amazon DynamoDB Developer Guide
- Local secondary indexes — Amazon DynamoDB Developer Guide
위에 링크된 공식 AWS 문서를 기준으로 2026-07-13에 마지막으로 검증했습니다. 400 KB 제약은 2026-07-28에 다시 확인했습니다. 이제 그것은 할당량 페이지가 아니라 Constraints.html에 있습니다.
2026-07-28에 Node v24.18.0의 @aws-sdk/client-dynamodb 3.1095.0으로 DynamoDB Local 3.3.0을 상대로 측정했습니다. 바이트 수치는 PutItem에 대한 이진 탐색에서 나왔고, ValidationException은 엔진 자체의 출력을 그대로 옮긴 것입니다.