Nesting Levels have exceeded supported limits
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 ドキュメント型にマーシャルするコード。
- 偶発的な自己ネスト — アイテムを繰り返し自身の中にラップするバグ。
- ネストが決して制限されなかったドキュメントデータベースから 移行されたドキュメント。
修正方法
- モデルをフラット化します — 深いサブ構造を、ますます深いマップではなく、トップレベル属性や複合キーのレイアウトに引き上げます。
- 複数のアイテムに分割します — 深いブランチを同じパーティションキー配下の別々のアイテムとしてモデリングします(シングルテーブルの隣接パターン)。
- 深いサブツリーをシリアライズします — 照会する必要がなければ、深すぎる部分を1つの JSON 文字列属性として格納します(DynamoDB に対して不透明なので、その内部深度はもはや数えられません)。
- マーシャリング層に 深度ガードを追加し、ドキュメントが黙って制限を超えて成長できないようにします。
DynoTable で測る
ネストした属性は、書き込む前に DynoTable で確認しましょう — ⌘K でアイテムを開き、JSON ビューアでマップ/リストのフィールドを展開すれば、構造がどこまで深いかが分かります。ステージング(⌘S)を使えば put/update をプレビューし、コミット前に深さのエラーを捕まえられます。
深さの確認と合わせてアイテムサイズ計算ツールも使ってください — 深いネストは、アイテムを 400 KB の上限に近づけることも多いからです。Local と AWS を切り替えて試すときは ⌘P を使います。セットアップ: AWS に接続する、インストール。
出典
- 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 — 別の 400 KB のアイテム全体の制限。
- An expression attribute name used in the document path is not defined — ドキュメントパスの参照エラー。
- ValidationException (overview)
- Learn: 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
最終検証日 2026-07-13、上記にリンクした公式 AWS ドキュメントに照らして確認しました。