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 键、大小、内容类型及其他元数据存进 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 agent。

30 天免费试用,无需信用卡 — 之后为无时间限制的免费版。