Size of hashkey has exceeded the maximum size limit of 2048 bytes

TL;DR — DynamoDB はキーの長さを制限します: パーティション(ハッシュ)キー の値は最大 2048 バイト、ソート(レンジ)キー の値は最大 1024 バイト で、UTF-8(または生のバイナリ)バイトで測定されます。キーが制限を超える書き込みは拒否されます。キーを短くしてください。長い値をハッシュ化するか、かさばるデータを非キー属性に移します。

意味

ValidationException: One or more parameter values were invalid: Size of hashkey has exceeded the maximum size limit of2048 bytes

# sort-key variant:
ValidationException: One or more parameter values were invalid: Aggregated size of all range keys has exceeded the size limit of 1024 bytes

# on DynamoDB Local you get one combined sentence instead, naming neither key:
ValidationException: Hash primary key values must be under 2048 bytes, and range primary key values must be under 1024 bytes

(はい、"of2048" のスペース欠落はサービスの実際のメッセージにあります。)キー属性は DynamoDB によってインデックス化され物理的にパーティション化されるため、その長さは 400 KB のアイテム制限より遥かに下に制限されています。パーティションキーの値は 1〜2048 バイト、ソートキーの値は 1〜1024 バイト でなければなりません。バイト数はエンコードされたサイズ(文字列は UTF-8、バイナリは生のバイト)です。マルチバイト文字は1つより多く数えられます。これは HTTP 400 の ValidationException、クライアント側の問題で、キーが縮小するまでリトライ不可です。

発生する理由

  • パーティションキーとしての長い文字列 — URL、完全なドキュメント、エンコードされた blob、または連結された複合キーをそのままキー値として使用する。
  • 冗長な複合ソートキー# で結合された多くのセグメントが合計で 1024 バイトを超える。
  • キー内の Base64 / シリアライズされたデータ — エンコードがバイト数を制限を超えて膨らませる。
  • マルチバイトテキスト — UTF-8 エンコードが文字数の示唆より大きい非 ASCII コンテンツ。

修正方法

  1. 長い値をハッシュ化します — 決定論的なダイジェスト(例: SHA-256、約 32 バイト)をキーとして格納し、完全な値を別の非キー属性に保持します。
  2. よりコンパクトなキーを選びます — かさばるフィールドの代わりに、より短い自然な識別子。
  3. 複合キーを短くします# で結合されたソートキーを構成するセグメントをトリムまたは省略します。
  4. 大きすぎるコンテンツをキーから通常の属性に移します(それは 400 KB のアイテム制限に収まればよいだけです)。

DynoTable から接続する

書き込む前に、下書きのキー値をアイテムサイズ計算ツールに貼り付け、2048/1024 バイトの上限に対してバイト数を確認しましょう。DynoTable では、⌘K で開いたテスト用アイテムに対して、ステージング(⌘S)が大きすぎるキーを捕まえてくれます。

複合キーを短くするときは、クエリビルダーでクエリを試作しましょう。プロファイルの切り替えは ⌘P、Settings → Profiles では Test Connection を実行します。AWS に接続するインストールを参照してください。

出典

関連するエラー

参考資料

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

Console なしで DynamoDB を扱う

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

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