중첩 수준이 지원되는 제한을 초과했습니다.
TL;DR — DynamoDB를 사용하면 문서 유형(맵 M 및 목록 L)을 최대 32레벨 깊이까지 중첩할 수 있습니다. 더 깊은 구조는 ValidationException로 거부됩니다. 데이터 모델을 평면화하거나, 깊은 분기를 별도의 항목으로 분할하거나, 너무 깊은 하위 트리를 단일 직렬화된 문자열로 저장하세요.
무엇을 의미하는가
ValidationException: 1 validation error detected: Nesting Levels have exceeded supported limits
# what the engine actually returns, reproduced against DynamoDB Local:
ValidationException: 1 validation error detected: Nesting Levels have exceeded supported limits: Attributes in the item have nested levels beyond supported limit(이것이 검증 실패에 대한 AWS 문서의 문구입니다. 정확한 문구는 작업에 따라 약간 다를 수 있습니다.) 속성 값은 스칼라일 수도 있고 자체적으로 더 많은 값을 포함하는 map/list일 수도 있으며, DynamoDB는 중첩이 32개 수준으로 제한됩니다. 표현식에도 동일한 한도가 적용됩니다. 문서 경로의 최대 깊이는 32이므로 이보다 더 깊은 참조도 불가능합니다. 제한은 속성 수가 아닌 맵과 목록의 깊이를 계산합니다. 이를 초과하는 것은 HTTP 400 ValidationException이며 유효성 검사 시 포착되며 문서가 재구성될 때까지 재시도할 수 없습니다.
왜 발생하는가
- 심층 재귀적 데이터 — 32레벨 이상의 지도 내에서 지도로 직렬화된 트리/그래프 구조(조직 차트, 설명 스레드, 중첩된 범주).
- 일반 직렬 변환기 — 깊이 가드 없이 임의의 중첩 JSON을 DynamoDB 문서 유형으로 바로 마샬링하는 코드입니다.
- 실수로 인한 자체 중첩 — 항목을 자체 내부에 반복적으로 래핑하는 버그입니다.
- 중첩이 제한되지 않은 문서 데이터베이스에서 이전된 문서입니다.
어떻게 해결하는가
- 모델을 평면화 — 더 깊은 맵 대신 깊은 하위 구조를 최상위 속성 또는 복합 키 레이아웃으로 끌어올립니다.
- 여러 항목으로 분할 — 동일한 파티션 키 아래의 별도 항목으로 깊은 분기를 모델링합니다(단일 테이블 인접 패턴).
- 깊은 하위 트리 직렬화 — 쿼리할 필요가 없는 경우 너무 깊은 부분을 하나의 JSON 문자열 속성(DynamoDB에 불투명하므로 내부 깊이가 더 이상 계산되지 않음)으로 저장합니다.
- 마샬링 레이어에 깊이 가드를 추가하여 문서가 조용히 한계를 넘어 커지는 것을 방지하세요.
- 쓰기 전에 깊이를 측정하세요. 직렬 변환기의 문서 트리를 살펴보고 30개 이상의 레벨을 거부하세요. 업데이트 경로를 하나 더 확보할 여유 공간을 남겨두세요.
DynoTable에서 측정
DynoTable에서 중첩된 속성을 작성하기 전에 검사하십시오. ⌘K가 있는 항목을 열고 JSON 뷰어에서 맵/목록 필드를 확장하여 구조가 얼마나 깊이 실행되는지 확인하십시오. 스테이징(⌘S)을 사용하면 넣기/업데이트를 미리 보고 커밋하기 전에 깊이 오류를 잡을 수 있습니다.
깊이 검사와 함께 item size calculator를 사용하세요. 깊은 중첩으로 인해 항목이 400KB 한도에 가까워지는 경우가 많습니다. 로컬과 AWS에 대해 테스트할 때 ⌘P로 프로필을 전환합니다. 설정: Connect to AWS, Install.
출처
- Constraints in Amazon DynamoDB (2026-07-13 인증)
- Referring to item attributes when using expressions (2026-07-13 인증)
관련 오류
- Item size has exceeded the maximum allowed size - 별도의 400KB 전체 항목 제한입니다.
- An expression attribute name used in the document path is not defined — 문서 경로 참조 오류입니다.
- ValidationException (overview)
- 학습: DynamoDB data types
참고 자료
- Constraints in Amazon DynamoDB — Amazon DynamoDB Developer Guide
- TransactWriteItems — Amazon DynamoDB API Reference
- Referring to item attributes when using expressions in DynamoDB — Amazon DynamoDB Developer Guide
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
위에 링크된 공식 AWS 문서를 기준으로 2026년 7월 13일에 마지막으로 확인되었습니다.