Expression size has exceeded the maximum allowed size
TL;DR — DynamoDB は すべての単一の式文字列を 4 KB に制限 します(式パラメータ: UpdateExpression、ConditionExpression、FilterExpression、ProjectionExpression)。あなたのものはそれを超えました。通常は大きなアイテムに対する自動生成の更新、または巨大な IN (…) / OR フィルターです。アイテムではなく式を縮小してください。
意味
ValidationException: 1 validation error detected: Invalid ConditionExpression: Expression size has exceeded the maximum allowed size; expression size: 27785末尾のバイト数は、あなたの式を実測したサイズなので、リクエストごとに変わります。
4 KB の上限は、アイテムの 400 KB サイズとは独立して、式文字列自体の長さ に対するものです。400 KB を十分下回るアイテムでも、SDK が属性ごとに1つの句を組み立てると(冗長なプレースホルダー名がすぐに積み重なる)式の予算をオーバーフローする可能性があります。これは HTTP 400 の ValidationException で、式を変更しない限り リトライ不可 です。
式の予算には、先に達しうる兄弟があります: 各 #name/:value プレースホルダーは 255 バイト、ExpressionAttributeNames + ExpressionAttributeValues の合計は 2 MB、単一の式は 300 個の演算子/関数、IN 比較子は 100 個のオペランドに制限されています。
発生する理由
- 幅広いアイテムに対する自動生成の
UpdateExpression— ORM/マッパーがすべての属性にSET #a0 = :v0, #a1 = :v1, …を出力し、プレースホルダー名 + 区切り文字が 4 KB を超える。 - 巨大な
FilterExpression— 長いattr IN (:0, :1, …)やORで連鎖した条件。 - 1つの
ConditionExpressionに多数のattribute_not_exists/比較を含む 一括条件付き書き込み。 - 大きなアイテムのコンソール編集 — 大きなアイテムの保存が、大きな更新/条件式を再出力する。
修正方法
- 変更されたものだけを更新します。 アイテム全体ではなく差分から
UpdateExpressionを組み立てます。ほとんどの更新はわずかな属性に触れます。 - プレースホルダー名を短くします。
#a/:vは長い説明的な名前に勝ります。数えられるのは式文字列の長さなので、簡潔な名前は実際の余裕を生みます。 - 巨大なフィルターを分割します — より狭いクエリに分けるか、フィルターが不要になるよう再構築します(より良いキー/インデックスは
OR条件を減らします)。 - 1つの大きすぎる書き込みを複数の より小さな更新に分割するか、単一の論理的変更がすべてを書き換えないようアイテムをモデリングします。
- ネストを減らします — 深くネストされたマップパスは式の長さを膨らませます。可能な場所でフラット化します。
アイテムと更新のサイズを一緒に監視していますか?DynoTable デスクトップアプリ は各アイテムの属性を表示するため、更新が必要以上にはるかに多くに触れるときが明白になります。
DynoTable から
DynoTable は、アイテムのすべての属性ではなく、実際に変更したフィールドから更新式を組み立てるので、式は 4 KB を大きく下回ったままです。⌘K でアイテムを開き、必要なフィールドだけを編集して、生成された式の文字列長を確認してください。
句を足していくときの式のサイズは、式ビルダーで確認できます。属性の多いアイテムが自動生成の更新を膨らませている場合は、アイテムサイズ計算ツールが役立ちます。プロファイルの切り替えは ⌘P です。AWS に接続するとインストールを参照してください。
出典
- Constraints in Amazon DynamoDB (2026-07-13 時点で検証)
- Using update expressions in DynamoDB (2026-07-13 時点で検証)
関連するエラー
- Item size exceeded the maximum (400 KB) — 式ではなくアイテムが大きすぎる。
- Reserved keyword in attribute name — そもそもプレースホルダーが必要だった理由。
- 学習: Update Expression · フィルタリング戦略
参考資料
- Constraints in Amazon DynamoDB — Amazon DynamoDB Developer Guide
- Using update expressions in DynamoDB — Amazon DynamoDB Developer Guide
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
最終検証日 2026-07-13、上記にリンクした公式 AWS ドキュメントに照らして確認しました。