文档

OSS成本最佳实践

更新时间:

使用OSS时,您可以根据业务数据的变化合理规划存储类型、利用预付费与后付费策略等方式有效降低使用成本。

注意事项

  • 以下案例单价来自2024年07月30日阿里云官网公布的OSS详细价格信息。因统计的价格日期不同,各个计费项的单价可能存在差异,实际使用时请以OSS产品定价页面发布的数据为准。

  • 以下案例仅覆盖常用的存储和数据请求的场景。如使用过程中涉及OSS其他功能,可能触发其他对应的计费项。更多信息,请参见计费项

确认Bucket容量增长是否符合预期

通过Bucket存储数据时,将根据数据的存储容量以及存储类型收取对应的存储费用。您可以通过定期查询账号级别的OSS用量情况,导出CSV用量明细表,查看当前账号下各个Bucket对应的存储容量数据,以此判断存储容量增长是否符合预期。具体步骤,请参见查询账号级别的用量情况

如果存储容量增长异常,可以考虑采用修改ACL为私有权限、配置Bucket Policy等方式,避免其他用户以未授权的方式对OSS资源进行各类操作,例如上传大量不符合预期的Object引起存储容量突增、恶意访问Object引起大额的外网流出流量费用等。更多信息,请参见降低因账号密码泄露带来的未授权访问风险

通过转换存储类型降低存储成本

转换存储类型前

用户A在OSS某个Bucket内以标准存储-本地冗余类型存储了100 TB的数据。当访问不同比例的数据时,该用户的每月成本说明如下:

存储类型

数据总量

存储费用(0.12 元/GB/月)

数据访问比例

外网流出流量费用(08:00 - 24:00(忙时)(0.50 元/GB)

数据取回容量费用

总费用

标准存储-本地冗余

100 TB

12,288

10%

5,120

0

17,408

50%

25,600

0

37,888

100%

51,200

0

63,488

假设以上案例中Bucket内的数据平均每月的访问频率为1到2次,且要求数据可以实时访问。基于以上分析,考虑将存储类型由标准转为低频访问。

转换存储类型后

从下表可以看出:

  • 如果每月访问10%的数据,使用低频访问存储相比标准存储可以节省约22%的费用。

  • 如果每月访问50%的数据,使用低频访问存储相比标准存储可以节省约6%的费用。

  • 如果每月访问100%的数据,使用低频访问存储相比标准存储节省约1%的费用

存储类型

数据总量

存储费用(0.08 元/GB/月)

数据访问比例

外网流出流量费用(08:00 - 24:00(忙时))(0.50 元/GB)

数据取回容量费用(0.0325 元/GB)

总费用

低频访问-本地冗余

100 TB

8,192

10%

5,120

332

13,644

50%

25,600

1,664

35,456

100%

51,200

3,328

62,720

建议动作

参考以下生命周期规则配置,实现Bucket内的所有数据在距离其最后一次访问时间30天后,存储类型由标准转换为低频访问。具体步骤,请参见基于最后一次访问时间的生命周期规则

lifecycle.jpg

假设该Bucket内存储了1,000万个文件,通过生命周期从标准转为低频访问类型时,产生的Put类请求费用为10,000,000次×0.01元/万次÷10000=10元。

通过资源包的方式降低使用成本

购买资源包前

请参考以上案例,获取未购买资源包前的使用成本。

购买资源包后

结合以上案例,可以考虑购买低频-本地冗余存储包以及下行流量包抵扣相关计费项,不支持通过资源包抵扣的计费项使用按量付费的方式。

  • 通过低频-本地冗余存储包抵扣低频访问-本地冗余容量费用

    您可以通过购买规格为100 TB,购买时长为1个月的低频-本地冗余存储包用于抵扣低频访问-本地冗余存储容量费用。

  • 通过下行流量包抵扣外网流出流量费用

    根据数据访问比例对应购买10 TB、50 TB以及100 TB的下行流量包,用于抵扣通过外网访问不同比例数据产生的外网流出流量费用。

  • 低频访问-本地冗余数据取回容量仅支持按量付费,不支持通过资源包抵扣。

结合使用资源包后,费用汇总如下:

存储类型

数据总量

低频 - 本地冗余存储包费用

数据访问比例

下行流量包费用

数据取回容量费用

总费用

低频访问-本地冗余

100 TB

7,370

10%

4,874

332

12,576

50%

24,371

1,664

33,405

100%

43,008

3,328

53,706

从上表对比可以看出:

  • 如果每月访问10%的数据,使用资源包+按量付费的模式比仅使用按量付费可以节省约8%的费用。

  • 如果每月访问50%的数据,使用资源包+按量付费的模式比仅使用按量付费可以节省约6%的费用。

  • 如果每月访问100%的数据,使用资源包+按量付费的模式比仅使用按量付费可以节省约14%的费用。

建议动作

购买低频-本地冗余存储包以及下行流量包。具体操作,请参见资源包购买指南

通过删除不再需要保留的文件降低存储成本

结合以上案例得知,Bucket内存储的1,000万个文件以低频访问类型存储一段时间后,根据业务使用场景可能有40%数量的文件不再需要保留。您可以遵照以下说明删除这部分文件。

  1. 确保要删除的文件以低频访问类型存储的时间要求至少30天,原因是不足30天的低频访问数据提前删除涉及不足规定时间存储容量费用。关于如何查看Object的LastModifiedTime,请参见ls(列举账号级别下的资源)

  2. 删除40%的低频访问文件。

    • 如果删除的文件有一定的规律,例如需要删除的文件均满足其LastModifiedTime在某个指定日期或指定天数之前,或者拥有相同前缀。建议配置生命周期规则实现自动批量删除。具体操作,请参见基于最后一次修改时间的生命周期规则

    • 如果要删除的文件其LastModifiedTime时间分散,并且没有相同前缀。建议逐一调用DeleteObject手动删除文件。具体操作,请参见删除文件

    结合以上案例得知,通过生命周期自动删除或者调用DeleteObject手动删除40%数量的低频访问类型Object时,按Object被删除时的存储类型(即低频访问类型)收取Put类请求费用。产生的Put类请求费用为10,000,000次×40%×0.1元/万次÷10000=40元。

    重要

    Object删除后无法恢复,请谨慎操作。

  3. 删除后,不再产生费用。

清理历史版本Object

Bucket开启版本控制后,针对数据的覆盖和删除操作将会以历史版本的形式保存下来。当Bucket累积了大量的历史版本时,您可以结合生命周期规则删除不必要的历史版本,从而减少存储成本。配置示例如下:

lifecycle.jpg

通过以上配置示例,OSS将自动删除距离最后一次修改时间超过200天的历史版本Object。具体步骤,请参见基于最后一次修改时间的生命周期规则

清理过期碎片

分片上传通过将待上传的大文件(超过5 GB)分成多个较小的碎片(Part),充分利用网络带宽和服务器资源并发上传多个Part,加快上传完成时间,并在Part上传完成之后调用CompleteMultipartUpload接口将这些Part组合成一个完整的Object。如果未调用CompleteMultipartUpload接口合并这些Part,这些Part将长期存储在Bucket中,占用存储容量,并产生存储费用。建议您配置生命周期规则,达到指定天数或者指定日期时自动删除碎片。配置示例如下:

碎片.jpg

通过以上配置示例,OSS将自动删除生成时间早于2天的碎片。具体步骤,请参见基于最后一次修改时间的生命周期规则

降低Bucket拥有者的外网流出流量和数据取回容量费用

假设Bucket拥有者授权其他用户以外网的方式访问该Bucket中的数据,并且希望通过请求者,而不是Bucket拥有者支付外网流出流量以及读取低频访问类型数据的容量费用时,可以开启请求者付费模式。具体操作,请参见开启请求者付费模式

重要

下行流量包不支持抵扣开启请求者付费模式后,请求者通过互联网从OSS传输到客户端产生的外网流出流量费用。通过请求者付费产生的外网流量仅支持按量付费。