DynamoDB 可以儲存圖片嗎?

可以,但只限小張的。DynamoDB 能把圖片存成 base64 編碼的 Binary(B)屬性,前提是整個項目維持在 400 KB 上限以下。較大的圖片,AWS 建議存到 Amazon S3,而在 DynamoDB 裡只保留物件中繼資料與一個 S3 參照,因為 400 KB 對多數媒體檔案來說太小了。

小圖儲存是怎麼運作的

把圖片編碼成 base64,再存進一個 Binary 屬性。DynamoDB 是以原始位元組長度計入那 400 KB 的項目上限,所以縮圖或圖示放得下;完整的照片通常放不下。

建議的模式

對於任何大於 400 KB 的東西:

  1. 把圖片上傳到 Amazon S3。
  2. 把它的 S3 key、大小、內容類型與其他中繼資料存進 DynamoDB。
  3. 從 DynamoDB 讀取中繼資料,再從 S3 取出物件。

請注意 DynamoDB 與 S3 並不共用交易,所以你的應用程式必須在失敗時清理掉孤立的物件。

內嵌要付出什麼代價

以每秒一次上傳、每秒十次瀏覽,在 us-east-1 以隨需模式計算,把兩種做法都丟進我們的定價計算機

每月380 KB 圖片內嵌119 位元組指標
寫入$624.15$1.64
讀取(最終一致性)$156.04$1.64
請求總計$780.19$3.29

同樣的流量花費是 238 倍,而這全都是容量進位造成的。一個寫入單位涵蓋 1 KB,所以那張圖片要收 380 個,而指標只收 1 個。讀取以 4 KB 進位,所以每一次對圖片的最終一致性讀取要花 47.5 個讀取單位,而指標是 0.5 個。

儲存成本則疊加在上面。每秒一次 380 KB 的上傳,一個月增加 952 GB,以 DynamoDB 每 GB-月 $0.25 計算是 $238.09,以 S3 Standard 的 $0.023 計算是 $21.90,而下個月的上傳又會再加上同樣一份。

那些數字所描述的指標項目是這個,它量起來是 119 位元組:

{
  "pk": "IMG#2026-07-28#a1b2c3",
  "s3Key": "uploads/2026/07/28/a1b2c3.jpg",
  "contentType": "image/jpeg",
  "bytes": 389120,
  "width": 1920,
  "height": 1080,
  "uploadedAt": 1785283200
}

深入了解

請見項目大小上限,並用項目大小計算機量測項目。下載 DynoTable 就能檢視二進位屬性。

定價來源

  • Amazon DynamoDB pricing — 請求單位與儲存費率,透過 AWS Price List API 同步進計算機。
  • Amazon S3 pricing — S3 Standard 儲存,us-east-1 前 50 TB 每 GB-月 $0.023(於 2026-07-28 從 Price List API 讀取)。

參考資料

最後查證於 2026-07-13,對照上方連結的官方 AWS 文件。

已於 2026-07-28 用我們自己的定價計算機,依它從 AWS Price List API 同步而來的 us-east-1 費率估算。輸入條件:隨需模式、每秒 1 次寫入、每秒 10 次最終一致性讀取、380 KB 對照上方那個 119 位元組的項目,免費方案關閉。

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

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

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