DynamoDB 的項目大小上限是多少?

400 KB。DynamoDB 的項目大小上限是 400 KB。這個總量同時計入屬性名稱(UTF-8 位元組長度)與所有屬性值(二進位長度),包含巢狀的 list 與 map。二進位值以原始位元組長度計算。這個上限沒有辦法調高 — 更大的物件應該放在 Amazon S3。

什麼會被算進那 400 KB

項目大小是以下各項的總和:

  • 每一個屬性名稱,以 UTF-8 位元組計算,以及
  • 每一個屬性值,以二進位長度計算(字串以 UTF-8、數字以精簡形式、二進位以原始位元組)。

巢狀的 map 與 list 結構還會加上一點逐元素的額外負擔。過長的屬性名稱會吃掉實實在在的空間 — 把它們縮短就能省出餘裕。

400 KB 是 409,600 位元組,而名稱也算在裡面

AWS 以二進位單位量測:「DynamoDB denotes 1 KB = 1024 bytes.」所以上限是 409,600 位元組,不是 400,000。你可以用一個字串屬性,對 PutItem 做二分搜尋找到那條精確的邊界:

await client.send(
  new PutItemCommand({
    TableName: 'sizes',
    Item: {pk: {S: 'A'}, a: {S: 'x'.repeat(n)}}
  })
);

能成功的最大 n409,596。加上鍵名稱(pk,2 位元組)、鍵值(A,1 位元組)與屬性名稱(a,1 位元組),你剛好落在 409,600。再多一個位元組,你會拿到:

ValidationException: Item size has exceeded the maximum allowed size
HTTP 400

現在把那個屬性從 a 改名成 attributeName,其他什麼都不動。塞得下的最大值掉到 409,584,正好少了 12 個位元組,而 12 正是那個名稱多出來的長度。

AWS 自己的建議就是從這道算術而來的。「We recommend that you choose shorter attribute names rather than long ones.」

這也是為什麼在一筆屬性很多的項目上,400 KB 的預算比看起來更緊。每一個名稱在每一次寫入、每一次讀取、在這筆項目的一生中,都要付出代價。

為什麼這很重要

項目大小驅動容量成本:每次讀取以 4 KB 為級距計費,每次寫入以 1 KB 為級距計費(見容量單位)。較大的項目每次操作都比較貴,同時也更容易撞上那個硬上限。

撞到上限時怎麼辦

把資料拆分到多筆項目,或把大型二進位物件搬到 Amazon S3,在 DynamoDB 裡只存一個參照。

深入了解

項目大小計算機量測任何項目,並閱讀項目大小上限指南。下載 DynoTable,在編輯的同時看見項目大小。

參考資料

最後驗證於 2026-07-13,對照上方連結的 AWS 官方文件。那個 400 KB 限制已於 2026-07-28 重新查證:它現在落在 Constraints.html,而不是配額頁面。

已於 2026-07-28,在 Node v24.18.0 上透過 @aws-sdk/client-dynamodb 3.1095.0 對照 DynamoDB Local 3.3.0 實測。那些位元組數字來自對 PutItem 的二分搜尋;ValidationException 為引擎的逐字輸出。

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

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

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