DynamoDB 可以儲存圖片嗎?
可以,但只限小張的。DynamoDB 能把圖片存成 base64 編碼的 Binary(B)屬性,前提是整個項目維持在 400 KB 上限以下。較大的圖片,AWS 建議存到 Amazon S3,而在 DynamoDB 裡只保留物件中繼資料與一個 S3 參照,因為 400 KB 對多數媒體檔案來說太小了。
小圖儲存是怎麼運作的
把圖片編碼成 base64,再存進一個 Binary 屬性。DynamoDB 是以原始位元組長度計入那 400 KB 的項目上限,所以縮圖或圖示放得下;完整的照片通常放不下。
建議的模式
對於任何大於 400 KB 的東西:
- 把圖片上傳到 Amazon S3。
- 把它的 S3 key、大小、內容類型與其他中繼資料存進 DynamoDB。
- 從 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 讀取)。
參考資料
- Best practices for storing large items and attributes in DynamoDB — Amazon DynamoDB Developer Guide
- Supported data types and naming rules in Amazon DynamoDB — Amazon DynamoDB Developer Guide
- Quotas in Amazon DynamoDB — Amazon DynamoDB Developer Guide
最後查證於 2026-07-13,對照上方連結的官方 AWS 文件。
已於 2026-07-28 用我們自己的定價計算機,依它從 AWS Price List API 同步而來的 us-east-1 費率估算。輸入條件:隨需模式、每秒 1 次寫入、每秒 10 次最終一致性讀取、380 KB 對照上方那個 119 位元組的項目,免費方案關閉。