发布于: Oct 30, 2022

在很多客户使用 Amazon S3 服务一段时间之后,都可能有降低云存储成本的想法。一般在现实状况下,由于多年的数据堆积和后期系统开发等方面因素,并不能很准确定义出存储桶中的数据情况(比如某个文件夹下面有多少文件是 30 天以内需要访问的,多少文件是 30 天之外会访问的,多少文件是 0KB 的文件,多少文件是小于 128KB 的文件等)。在这种状况下进行 S3 费用优化,过程中可能会遇到很多问题,甚至不恰当的优化方式不但不会降低成本反而会导致费用的进一步增加。所以不能仅靠粗略估计,而是需要通过更细致的分析进行各种优化方式的优劣对比,找到最合适的优化方案。本文将带大家详细了解一下 S3 成本优化的最佳实践过程。

S3 存储类型分为 5 种(低冗余存储官方已经不再建议使用,所以排除在外),分别是:1. S3 标准 2. S3 智能分层 3. S3-IA (包括 one zone)4. S3 Glacier5. S3 Glacier Deep Archive S3 并不是只是简单的按照数据用量来收费,不同的类型有不同的价格,并且在数据使用费之外,还有其他费用,例如据请求费和检索费等。从 1-5,数据存储费越来越便宜,但是请求和数据检索的费用却越来越贵。所以 S3 的使用总费用是数据存储费+请求检索费+数据传输费用+存储类型转换费。 下图以 1000 个文件,总大小 1GB 在美东 1 区佛吉尼亚北部的费用为例:

下面我们开始讲解具体的操作步骤 (注意以下提到的内容不涉及到开启了版本控制的桶,对于开启了版本控制的桶虽然逻辑相同,但是一些查询方法会有差别,请酌情参考),以下价格全部以美东 1 佛吉尼亚北部为例,具体价格可以参考以下页面:Amazon S3 定价

分段上传文件,是指一些大文件上传的时候自动分成几个小分段,但是传输过程中某几个分段失败了,留下了其他的不完整文件分段。由于这部分文件是隐藏文件但是也占用空间,因而在做真正的优化之前,除非应用有特别需求,一般情况都建议把这部分文件从桶上删除掉。如果想了解一个桶上有多少 multi-upload 文件,可以使用 CLI – s3api list-multipart-uploads –bucket my-bucket 进行查询,或者也可以联系 Amazon Web Services 支持中心或您的专属TAM来获取这部分具体信息。对于一些客户,这部分文件的使用量可能达到一个桶的 10%,比如 20PB 的 S3 桶,2PB 都是不必要的未完成传输文件分段。 参考以下文档对整桶配置生命周期根据需要清理这些未完成文件分段,使用生命周期删除文件不会产生额外费用。

做任何 S3 成本优化之前,建议开启 S3 清单(inventory)功能,这样可以借助 Amazon athena 服务来查询 s3 清单中的内容从而更准确地确认各种存储类型的文件列表以及文件数目等详细信息。

S3 清单价格: 每百万个所列对象 0.0025 USD – 一个桶如果有 10 亿文件数的话,开一次清单收费 2.5$

Athena 查询费用:每 TB 扫描数据 5.00 USD  – 一个桶如果有 10 亿文件数的话,大概清单文件为 30-40GB,查询 1 次价格为 0.2$.

可以看到使用这两个功能的价格跟节省成本比较几乎可以忽略不计

请注意,请开启 S3 清单功能的时候选择 CSV 格式并且选择每周刷新数据,这样可以减少生成的文件数量,便于查询。

如何开启 S3 清单: S3 控制台管理清单新增

选择大小,上次修改日期,存储类别,默认选仅限当前版本。如果桶开启了多版本,需要选择包括所有版本

相关文章