Expression size has exceeded the maximum allowed size

TL;DR — DynamoDB は すべての単一の式文字列を 4 KB に制限 します(式パラメータ: UpdateExpressionConditionExpressionFilterExpressionProjectionExpression)。あなたのものはそれを超えました。通常は大きなアイテムに対する自動生成の更新、または巨大な 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/比較を含む 一括条件付き書き込み
  • 大きなアイテムのコンソール編集 — 大きなアイテムの保存が、大きな更新/条件式を再出力する。

修正方法

  1. 変更されたものだけを更新します。 アイテム全体ではなく差分から UpdateExpression を組み立てます。ほとんどの更新はわずかな属性に触れます。
  2. プレースホルダー名を短くします。 #a/:v は長い説明的な名前に勝ります。数えられるのは式文字列の長さなので、簡潔な名前は実際の余裕を生みます。
  3. 巨大なフィルターを分割します — より狭いクエリに分けるか、フィルターが不要になるよう再構築します(より良いキー/インデックスは OR 条件を減らします)。
  4. 1つの大きすぎる書き込みを複数の より小さな更新に分割するか、単一の論理的変更がすべてを書き換えないようアイテムをモデリングします。
  5. ネストを減らします — 深くネストされたマップパスは式の長さを膨らませます。可能な場所でフラット化します。

アイテムと更新のサイズを一緒に監視していますか?DynoTable デスクトップアプリ は各アイテムの属性を表示するため、更新が必要以上にはるかに多くに触れるときが明白になります。

DynoTable から

DynoTable は、アイテムのすべての属性ではなく、実際に変更したフィールドから更新式を組み立てるので、式は 4 KB を大きく下回ったままです。⌘K でアイテムを開き、必要なフィールドだけを編集して、生成された式の文字列長を確認してください。

句を足していくときの式のサイズは、式ビルダーで確認できます。属性の多いアイテムが自動生成の更新を膨らませている場合は、アイテムサイズ計算ツールが役立ちます。プロファイルの切り替えは ⌘P です。AWS に接続するインストールを参照してください。

出典

関連するエラー

参考資料

最終検証日 2026-07-13、上記にリンクした公式 AWS ドキュメントに照らして確認しました。

Console なしで DynamoDB を扱う

DynamoDB では実行できない本物の SQL(JOINs、GROUP BY、集計)を実行する高速な DynamoDB デスクトップクライアント。ビジュアル編集と、あなた自身の Bedrock キーで動く AI エージェントを備えています。

30日間無料トライアル、クレジットカード不要 — その後は期限のない Free プラン。