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

TL;DR — DynamoDB 限制鍵長度:一個分割槽(hash)鍵值最多 2048 位元組,一個排序(range)鍵值最多 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,二進位制用原始位元組)——多位元組字元不止算一個。它是一個 HTTP 400 ValidationException,屬於用戶端錯誤,在鍵變小之前不可重試。

為什麼會發生

  • 一個長字串作為分割區索引鍵——一個 URL、完整文件、編碼的二進位制塊,或直接用作鍵值的連線複合鍵。
  • 一個冗長的複合排序索引鍵——用 # 連線的許多段合計超過 1024 位元組。
  • 鍵中的 Base64 / 序列化資料——編碼把位元組數膨脹過了限制。
  • 多位元組文字——其 UTF-8 編碼比字元數所暗示的更大的非 ASCII 內容。

如何修正

  1. 對長的值做雜湊——儲存一個確定性摘要(例如 SHA-256,約 32 位元組)作為鍵,把完整的值保留在一個單獨的非鍵屬性中。
  2. 選擇一個更緊湊的鍵——用一個更短的自然識別符號代替龐大的欄位。
  3. 縮短複合鍵——裁剪或縮寫構成 # 連線排序索引鍵的那些段。
  4. 把超大的內容移出鍵進入一個常規屬性(它只需容納 400 KB 的項目限制)。

從 DynoTable 連線

將草稿鍵值貼上到 item size calculator 中,並在寫入之前檢查位元組數是否符合 2048/1024 限制。在 DynoTable 中,暫存 (⌘S) 捕獲使用 ⌘K 開啟的測試項目上的過大按鍵。當縮短組合鍵時,原型查詢在Query Builder中。使用 ⌘P 切換設定檔案; 在“設定”→“設定檔案”上測試連線。參見連線 AWS安裝

來源

相關錯誤

參考資料

最後核實於 2026-07-13,依據上方連結的 AWS 官方文件。

不必透過主控台就能操作 DynamoDB

一款快速的 DynamoDB 桌面用戶端,可執行 DynamoDB 無法執行的真正 SQL — JOINs、GROUP BY、聚合 — 並支援視覺化編輯與使用你自己的 Bedrock 金鑰的 AI 代理。

30 天免費試用,無需信用卡 — 之後為無時間限制的免費方案。