Type something to search...
13 招搞定对象存储成本:S3 到 OSS/COS/OBS/TOS 全覆盖

13 招搞定对象存储成本:S3 到 OSS/COS/OBS/TOS 全覆盖

Amazon Simple Storage Service(Amazon S3)是一款 高扩展、低时延、相对低价 的云对象存储。开发者可通过友好的 Web 界面,随时随地保存、归档并检索海量结构化或非结构化数据。S3 采用 Key-Value 模式,无论数据大小、访问频次,都能弹性存储并按使用量计费。

目标虽是“低成本”,但不少团队仍被 S3 账单困住。

如果你正头疼存储费用,下面整理的 12+ 条 S3 成本优化秘籍 或许能帮你“止血”。每条技巧 后,我们都会补充 阿里云 OSS、腾讯云 COS、华为云 OBS、火山引擎 TOS 在同类场景下的配置思路,方便对照落地。


什么是 Amazon S3 成本优化?

S3 成本优化 指一系列最佳实践,目标是在 不影响业务可用性、性能和安全 的前提下,最大限度降低 Amazon S3 的使用费用,并提升对象存储投资回报。

“成本优化” ≠ 单纯“省钱”

  • 只降成本
    可能简单粗暴地删减配置或降低冗余,账单立竿见影下降,但也可能让应用的可靠性、访问延迟甚至安全性受损。

  • 成本优化
    先找出真正驱动 S3 账单的关键因素,再对症下药——既省钱,又不掉链子。

因此,正确的做法是 先理解 S3 计费结构,再定位成本热点,最后选择合适的优化动作。下文我们将逐条拆解常见成本项,并给出可落地的优化技巧。

🇨🇳 国内对象存储同理

阿里云 OSS、腾讯云 COS、华为云 OBS、火山引擎 TOS 等平台在计费逻辑上与 S3 类似:主要由存储量、请求次数、数据取回/迁移、流量等组成。掌握 S3 优化思路后,同样可映射到这些国产云服务。


对象存储费用怎么算?

Amazon S3 与大多数 AWS 服务一样,采用 按需付费(pay-as-you-go) 模式:

  • 零预付、无最低门槛
  • 只为 实际使用量 付费
  • 可随时扩缩,不受容量与合约限制

🇨🇳 国内对象存储同理

对比国内云:阿里云 OSS、腾讯云 COS、华为云 OBS、火山引擎 TOS 也均采用类似的存储量 + 请求量计费模式。


影响 S3 账单的主要变量

维度说明国内对象存储对应项
存储类型S3 提供 6 大存储类型(Standard、IA、Glacier 等),价格随冗余与取回时延递减OSS Standard / IA / Archive;COS 标准存储 / 低频存储 / 归档存储;OBS、TOS 类似
数据量 (GB)每类存储按月计费同上
请求次数PUT、GET、LIST 等 API 调用按千万级计费OSS/COS/OBS/TOS 也会区分上传、下载、列举等请求费用
数据取回冷数据(Glacier/Archive)按取回量计费国内云的归档/冷归档同理
跨区流量跨区域复制、下载到公网会产生流量费输出到公网、跨地域复制收费

1. 先弄清楚自己到底怎么用对象存储,再动手优化

在动任何配置前,可观测性 是第一步。对 Amazon S3 来说,官方的 S3 Storage Lens 就是首选工具,它可以按 账户 / Bucket 维度,统计存储量、请求类型、取回模式等 29+ 指标,让你清楚知道:

  • 哪些桶最大,哪些几乎不访问
  • 哪些桶里堆满旧版本或未完成分段上传
  • 生命周期规则是否缺失,导致文件无法自动转低频或归档层

启用后,你就能在仪表盘里:

优化切入口对应操作
Largest Buckets找出 Top N 最大 Bucket,重点排查是否热数据混冷数据
Cold Buckets标记近乎零访问的桶,评估是否转低频 / 归档类
Incomplete Multipart Uploads7 天以上未完成分段上传,添加生命周期规则自动清理
Non-current Versions限制旧版本保留天数或数量
Lifecycle Rule Count检查是否缺少转储 / 过期规则

详细步骤可参见 官方指南

🇨🇳 国内云厂商的同类做法

服务相似功能
阿里云 OSSCloudLens
腾讯云 COS数据监控
华为云 OBS监控服务
火山引擎 TOS监控服务

落地建议

不管使用哪家云,先打开 “用量 / 画像 / Storage Lens” 这类分析面板,至少跑一周数据再着手改动。这样能精准知道 “该删的删、该转的转”,而不是一刀切地降配或手动搬家。


2. 自动把对象转到更便宜的存储层

当你不确定 何时 应把数据从 Standard 层转到更便宜的层(如 Standard-IA),先用 Amazon S3 Storage Class Analysis 观察访问模式——在桶级别开启即可。
看清哪些数据几乎不再被访问后,再用 S3 Lifecycle 规则 让对象自动下迁:

目标存储层典型场景
S3 Standard-IA偶尔访问、需要多 AZ 冗余
S3 One Zone-IA可接受单 AZ、但读写仍偶尔发生
S3 Glacier / Glacier Deep Archive归档,几乎不访问或仅做合规保留

示例:

  • 对象创建 30 天后转 Standard-IA
  • 创建 365 天后转 Glacier Deep Archive

该做法适合 访问模式可预测 的数据。如果访问不规律,可用 Intelligent-Tiering

🇨🇳 国内云厂商对照

云厂商对应功能
阿里云 OSSLifecycle
腾讯云 COSLifecycle
华为云 OBSLifecycle
火山引擎 TOSLifecycle

落地建议

  1. 先开“访问/用量分析”跑 7–30 天,搞清冷热分布。
  2. 再分前缀或标签建 Lifecycle,避免“一刀切”误伤热数据。
  3. 定期复查规则:业务变更后及时调整天数或目标层,防止数据被误归档。

3. 启用 Intelligent-Tiering:让 S3 自动帮你“分冷热”

S3 Intelligent-Tiering 会持续监控对象的访问模式,并在后台把对象自动转到“最划算”的存储层,无需人工干预。
不过,它并非零成本——主要有两类额外费用。

费用项单价说明
监控费$0.0025 / 1,000 对象 / 月用于统计访问频率
转层费$0.01 / 1,000 对象 / 次对象在不同 IA 层之间切换时收取

取回存放在 Infrequent Access (IA) 层的数据还需 $0.01 / GB 带宽费,但与 Standard 层“免费取回”相比,整体存储单价可低 4 倍,适合“一个月最多查一次、做备份 / 容灾”的场景。

费用估算公式

监控费 = 对象数 ÷ 1000 × 0.0025 转层费 = 当月触发转层的对象数 ÷ 1000 × 0.01

启用前务必评估访问模式:

  • 如果对象读写频繁,Intelligent-Tiering 监控费 + 转层费 可能抵消存储节省,得不偿失。
  • 若冷热分明、但难以手动设置生命周期规则,Intelligent-Tiering 就很划算。

注意权衡

  • IA/Glacier 层副本少、SLA 稍低、取回需等待。
  • 每 1,000 对象在层之间切换都要 $0.01,所以短期冷热频繁波动时成本可能升高。

🇨🇳 国内云厂商对应功能

云厂商对应功能
阿里云 OSS智能分层
腾讯云 COS智能存储分层
华为云 OBS生命周期管理
火山引擎 TOS智能分层

落地建议

  1. 先用“用量分析 / Storage Lens”跑一段时间,确认冷热分布。
  2. 对“访问规律难预测”的桶启用智能分层;访问稳定可预测的桶继续用 Lifecycle 手动转层更划算。
  3. 定期观察监控费用占比,若监控费 > 节省的存储费,说明此桶不适合智能分层。

4. 将 KMS 替换为 S3 Bucket Keys:加密也能省钱

当你在 S3 中启用 AWS KMS(客户主密钥加密)时,每次写入对象都会触发一次 加密请求,读取时触发一次 解密请求,按调用次数计费。如果数据量大、请求频繁,KMS 调用费会显著抬高账单。

S3 Bucket Keys 通过为同一桶内的对象生成 “批量数据密钥”,可把频繁的 KMS 调用压缩到极少数几次,官方测试可 降低多达 99 % 的 KMS 费用,且不影响现有应用逻辑——只需在桶上勾选即可。

操作路径:S3 → Bucket → Properties → Default encryption → 勾选 “Bucket Key”

注意:即便 Key 处于 Disabled 状态,KMS 也会继续计费。如确定关闭不会影响已有服务,建议 直接删除闲置 CMK,彻底停掉费用。

🇨🇳 国内云厂商对应做法

云厂商同类功能
阿里云 OSS官网暂无描述
腾讯云 COS官网暂无描述
华为云 OBS官网暂无描述
火山引擎 TOS官网暂无描述

落地提示

  • 检查每月 KMS 请求量,若费用占比高,可先在测试桶开启 Bucket Keys/桶级密钥评估效果。
  • 定期清理 已禁用 又不会再用的 CMK,避免“闲置也计费”。
  • 对于低敏感或内部日志等数据,可考虑使用 SSE-S3(服务端默认加密)或不加密,以降低整体加密成本。

5. 提升传输速度:快进快出,间接省钱

更快的上传/下载意味着:

  • 性能更好:数据及时可用,用户体验不掉链子
  • 资源占用更少:传输时间缩短,所用的计算实例、带宽等可计费资源随之减少

先在小规模场景压测,确认 “加速费 < 节省的资源费” 再全面推广。

S3 的做法:开启 Transfer Acceleration

  • 利用 Amazon CloudFront 全球边缘节点,让文件经最近的边缘站点入网,官方测试最快可比普通公网上传 提速 10 倍
  • 开启路径:S3 → Bucket / PropertiesTransfer acceleration → Enable
  • 计费:按区域 & 流出流量额外加收 $0.04+/GB(详见官方定价)

🇨🇳 国内云厂商对应方案

云厂商规则降费思路
阿里云 OSS入站免费;公网下行收费;内网流量免费OSS 加速 + CDN + 跨区域复制
腾讯云 COS入站免费;公网下行收费;内网流量免费全球加速 + CDN + 跨区域复制
华为云 OBS入站免费;公网下行收费;内网流量免费CDN + 跨区域复制
火山引擎 TOS入站免费;公网下行收费;内网流量免费传输加速 + CDN + 跨区域复制

落地建议

  1. 针对 跨区域 / 跨国 的大文件或高并发场景优先考虑加速。
  2. 上传前压缩 / 分片,多线程并行,可进一步提升有效速率。
  3. 定期评估加速产生的额外流量费,确保 ROI 为正。

6. 只取 需要的那部分数据:用 S3 Select 精准取回

S3 Select 允许你在对象(CSV、JSON、Parquet)内部执行 SQL-like 查询,仅返回匹配行/列。
这样可显著减少 取回数据量缩短下载时间降低流出流量费

  • 使用方法:
    1. 确保对象格式为 CSV / JSON / Parquet
    2. S3 控制台 → 选中文件 → Actions → Query with S3 Select
    3. 编写 SQL(支持 SELECT col1,col2 WHERE…)
  • 控费逻辑:只按返回字节计费,未返回的数据不产生取回费。

控制台搜索小技巧:在 Bucket 内使用 前缀搜索栏,快速定位对象,再对单文件使用 S3 Select。

🇨🇳 国内云厂商对应功能

云厂商类似服务
阿里云 OSSOSS Select
腾讯云 COSSQL Select
华为云 OBS暂无
火山引擎 TOS暂无

建议场景

  • 日志分析:只拉取近 1 小时 / 指定字段
  • 数据湖:从大 Parquet 文件选取所需列后再下游处理
  • 移动网络:客户端按需取回 JSON 片段,减少流量

使用 Select 时,注意对 频繁查询的小文件 进行合并,避免过多函数调用产生额外请求费。


7. 让「存储」和「计算」待在同一地区

原则:桶和计算节点同区,流量=0;跨区流量要收费

  • 同区访问
    EC2(或 EKS、Lambda 等)与 S3 处于同一 Region 时,读写走内网,不计流出费,延迟也最低。
  • 跨区访问
    若 EC2 在 us-east-1 而 S3 在 ap-southeast-1,下载数据会产生跨区流量费,且时延更高。

降费做法

场景优化建议
计算与存储必须跨区复制桶 到计算区最近的 Region,只复制必要前缀 / 标签,控制体量
热门静态文件频繁跨区下载把文件分发到 CloudFront CDN,用户就近获取,S3 流出压缩
临时批处理 / 迁移先就近创建 EC2,再拉取数据;处理完直接从同区上传结果

注意:整桶跨区复制开销大,先核算数据量 & 复制频率,必要时仅做局部复制。

🇨🇳 国内云厂商同样适用

云厂商降费提示
阿里云 OSSECS 与 OSS 选相同地域,内网走 0 流量费;跨地域同步数据先用跨区域复制
腾讯云 COSCVM 与 COS 保持 “同 Region + 私有网络直连” 免费;跨地域同步数据先用跨区域复制
华为云 OBSECS 与 OBS 同 VPC / 同 Region 内网 0 流量;跨地域同步数据先用跨区域复制
火山引擎 TOS计算资源与 TOS 桶放同 Region;跨地域同步数据先用跨区域复制

实操 Checklist

  1. 创建新桶/新计算节点前,先确认两者 Region 是否一致。
  2. 对现有跨区调用,跑一次流量账单,评估是否“搬桶”或“复制前缀”。
  3. 大量静态资源跨区下载 → CDN;动态、少量数据 → 同区直连/小规模复制。

8. 用 IAM 控制谁能干什么,顺带省钱

  • 核心思路:谁该读就读,谁该写就写,其他操作统统禁掉。
  • 为什么省钱:少了不必要的上传、下载、删除请求,就少了对应的计费。

怎么做?

  1. 打开 AWS 控制台 → 搜索 IAM
  2. UsersRoles 里,为人员/程序绑定合适的权限策略。
    • 只读示例:s3:GetObject
    • 只写示例:s3:PutObject
  3. 建议按 桶或前缀 授权,生产和测试环境分开。

同样的思路也适用于阿里云 OSS(RAM)、腾讯云 COS(CAM)、华为云 OBS、火山引擎 TOS:给最小权限,就能减少多余请求和费用。


9. 及时清理不用的数据

  • 能删就删
    • 过期日志、测试文件、临时导出……不用就直接删除。
  • 能重建的也删
    • 自动生成的中间结果,日后再需要再跑一次即可。
  • 清理未完成分片上传
    • 这些碎片会计费,可用 Lifecycle 规则 7 天后自动删除。
  • 别忘清空回收站
    • S3 的 “Delete Marker” 或版本库里的旧版本都会占用存储。

如果真的不放心彻底删除,可转最便宜的归档层:

AWS 方案单价适用场景
Glacier Flexible Retrieval较低少量取回、时延小时级
Glacier Deep Archive最低基本不访问,需要时可等 12 小时取回

创建 Lifecycle 规则,让旧文件(如 180 天未访问)自动转归档层。需要时再 Restore 解归档即可。

🇨🇳 国内云厂商类比

云厂商归档层清理方式
阿里云 OSS归档 / 冷归档存储Lifecycle 自动删除分片 / 转档
腾讯云 COS归档 / 深度归档存储同上
华为云 OBS归档 / 冷归档存储同上
火山引擎 TOS归档 / 深度归档存储同上

清理/转档建议设在低峰时段执行,避免与业务高峰冲突。


10. 小文件打包一起传,减少 API 调用

在 S3 里,计费看请求次数,不看文件大小

  • 1 次 PUT 上传 1 KB 收费和上传 1 GB 完全一样
  • 如果你把 1 GB 拆成 10 000 个小文件上传,就要付 10 000 次 PUT 费,成本瞬间翻倍。

做法

  1. 使用 tarzip 等把大量小文件先 本地打包(或在临时 EC2 打包)。
  2. 生成一个大文件后,再一次性 PUT 到 S3。
  3. 需要读取时,再用 S3 Select / Range Get / 下载到本地解包。

效果:请求次数骤降 → PUT/GET 计费显著降低。

🇨🇳 国内云厂商同理

云厂商建议
阿里云 OSS大量小文件同样按 PUT/GET 次数计费,先 tar 再上传可省请求费
腾讯云 COS支持断点续传,但仍按请求计费,批量打包后再用分片上传更划算
华为云 OBS归档冷数据时,先合并再上传,后续解包也只计少量请求
火山引擎 TOS建议日志归档前合并,减少 PUT 次数;需要随机读取可配合 TOS Select

注意

  • 打包会让单个对象变大,下载时需整体取回或用 Range 请求;适用于归档、日志、备份等顺序读场景。
  • 若后续需随机访问单个子文件,考虑使用 Parquet 这类可列式读格式,再配合 S3 Select。

11. 改用 Parquet + 压缩:体积小,查询快,费用低

  • Parquet 是列式存储格式,自带高压缩比(可再叠加 ZSTD / GZIP / LZ4)。
  • 对比 CSV:
    • 存储占用 可降 50–90 %
    • 扫描查询 只读相关列,IO 更少,取回流量费更低

适用场景:日志分析、数据湖、机器学习特征库等“读列多于写行”的场景。

落地步骤

  1. 在 ETL 流程末尾把原始 CSV / JSON 转成 Parquet + 压缩。
  2. 上传至 S3(或 OSS/COS/OBS/TOS)。
  3. 上游用 Athena / EMR / StarRocks 等直接查询,减少下载流量。

🇨🇳 国内云厂商同样支持

云厂商建议
阿里云 OSS与 S3 一样
腾讯云 COS与 S3 一样
华为云 OBS与 S3 一样
火山引擎 TOS与 S3 一样

小贴士

  • 配合 S3 Select / OSS Select 仅拉所需列,更省流量。
  • ZSTD 通常压缩率 > GZIP,且解压更快,可优先考虑。

12. 查询前先做 分区,少扫文件少花钱

在 S3 上跑 SQL(Athena、Redshift Spectrum、EMR 等)时,表其实映射到 Bucket / 目录
如果文件没按日期、时间、业务 ID 等维度分区,查询时就得 全桶扫描 → 产生大量 GET 请求 + 流量费。

最佳实践

  1. 按常用过滤条件建目录
    常见分区键:date / hour / tenant_id / region

  2. 加载分区元数据

  • Athena:MSCK REPAIR TABLEPARTITIONED BY 创建表时指定
  • EMR:在 Hive/Presto 中 ALTER TABLE ... ADD PARTITION
  1. 查询时带过滤
SELECT * FROM logs WHERE date='2025-04-24';

🇨🇳 国内云厂商同样支持

云厂商建议
阿里云 OSS与 S3 一样
腾讯云 COS与 S3 一样
华为云 OBS与 S3 一样
火山引擎 TOS与 S3 一样

🚀 收益:分区过滤 + Parquet 压缩 → 扫描的数据量最小化,请求费、扫描费和查询时长都能明显下降。


13. 让工程师“当家做主”,把 S3 成本纳入日常指标

不少团队都有过这样的经历:
演示环境开完忘记关,测试脚本上传海量数据没人清理……
几个开发者叠加,就可能让账单“炸雷”。

建立成本共担文化,从流程和工具两方面入手:

行动实施要点
定规则- 规定非工作时段自动关停临时资源
- 对闲置时间 > N 分钟的桶或测试实例自动删除
设指标- 明确哪些指标代表“花钱点”(存储量、GET/PUT 次数、跨区流量等)
- 每周回顾一次 Top N 桶花费
配数据- 把费用拆到「项目 / 团队 / 环境」,让工程师看懂自己写代码花了多少钱
勤告警- 使用 CloudWatch、Billing Alarm 等捕捉突增
- 超预算立刻推送到 钉钉 / 飞书 / 企业微信
常培训- 教工程师把“成本”当作第一类非功能需求,与性能、安全并重

至此,12 + 1 条对象存储省钱秘籍全部奉上

从用量洞察、生命周期转层,到权限控制,再到团队文化——希望能帮你在 AWS S3 及国内各大云对象存储上,把每一分钱都花在刀刃上。


联系我们

有任何云成本管理的需求或问题?欢迎通过以下方式联系我们!

公众号

Mofcloud 微信公众号二维码

企业微信客服

Mofcloud 企业微信客服二维码

业务咨询

contact@mofcloud.com

技术社区

mofcloud/issuer

地址

北京市海淀区自主创新大厦 5层

标签 :

推荐阅读