我的 AWS 账单上的 Amazon S3 费用异常高。我该如何降低 Amazon S3 成本?

上次更新日期:2021 年 5 月 21 日

我的 AWS 账单上的 Amazon Simple Storage Service (Amazon S3) 使用费高于预期。我该如何降低 Amazon S3 成本?

简短描述

Amazon S3 费用基于存储、请求和数据检索、数据传输(包括 S3 Transfer Acceleration 的使用)以及数据管理。

为了确定可在哪些方面降低 Amazon S3 费用,您必须先了解 Amazon S3 的当前账单和使用情况。然后,您必须了解可能产生费用的方式

了解 Amazon S3 的收费方式之后,请考虑通过以下提示降低账单费用:

  • 清理未完成的分段上传。
  • 删除不需要的先前版本的对象。
  • 审查您的存储类转换成本。
  • 审查您的数据检索成本。
  • 跟踪对存储桶发出的请求。
  • 检查存储桶大小的变化。
  • 审查单个存储桶的成本。
  • 了解使用量与费用之间的关系。

您还可以使用以下 Amazon S3 功能帮助您调查账单问题:

  • 使用 Amazon S3 Storage Lens 获取 Amazon S3 存储中的使用情况和活动的单一视图。S3 Storage Lens 将会生成组织、账户、存储桶、对象甚至是前缀级别的见解。S3 Storage Lens 将会分析这些存储指标,以提供有助于您优化存储成本并应用数据保护最佳实践的建议。
  • 使用 Amazon S3 存储类分析观察数据访问模式。借助 S3 存储类分析,您可以确定何时将访问频率不高的 STANDARD 存储转换为 STANDARD_IA(IA,即不频繁访问)存储类。
    注意:必须为每个存储桶配置 Amazon S3 存储类分析

解决方法

清理未完成的分段上传

启动分段上传后,Amazon S3 会保留文件的所有已上传部分,直到您完成或中止分段上传。如果您未成功完成分段上传,则 Amazon S3 会继续存储已上传的部分。因此,您需要为已上传部分的存储付费。

如果您使用 AWS 命令行界面 (AWS CLI) 终止分段上传 (abort-multipart-upload),则该操作将删除(未完成)已上传的部分。但是,如果您使用其他采用 Amazon S3 分段上传 API 的工具,则未完成的分段上传可能会遗留已上传部分。

以下是清除未完成分段部分的其他最佳实践:

此外,您还可以利用 Amazon S3 Storage Lens 识别包含分段上传的 S3 存储桶。借助 S3 Storage Lens,您可以预览未完成的分段上传中存在的数据量。

删除不需要的先前版本的对象

警告:删除任何对象或对象版本时,请保持谨慎。Amazon S3 无法还原您从存储桶中删除的任何数据。

如果您已在存储桶中启用版本控制,则每个对象可能具有多个版本。每个对象版本都会增加您的存储成本。

要查看您的对象版本,请使用 Amazon S3 控制台运行 ListObjectVersions API 调用。然后,删除任何不需要的对象版本

注意:在已启用版本控制的存储桶中,您必须指定对象版本 ID 才能永久删除对象版本。如果您对已启用版本控制的存储桶中的对象运行简单删除请求,则 Amazon S3 会向该对象添加删除标记。删除标记将成为该对象的当前版本,同时实际的对象将成为早期版本。 但是,实际上不会擦除对象及其版本。

您也可以使用以下内容:

审查您的存储类转换成本

将对象转换为其他存储类以降低当前存储成本是一种常见做法。但是,将对象从一种存储类转换为另一种存储类可能会产生相关费用,了解这一点也很重要。

例如,当对象从 S3 标准转换为 S3 标准-IA 存储类时,您需要为每 1000 次生命周期转换请求支付 0.01 USD 的费用。对于从任何存储类转换为 Amazon Simple Storage Service Glacier 存储类的对象,每 1000 次生命周期转换请求将产生 0.05 USD 的费用。有关更多信息和定价详细信息,请参阅 Amazon S3 定价

如果您设置了将整个存储桶对象转换为另一种存储类的生命周期配置规则,则 S3 费用预计会增加。要确定费用是否会因为生命周期规则增加,请检查您的 AWS CloudTrail 事件历史记录。您还可以检查 PutBucketLifecycleConfiguration 调用的 Amazon S3 服务器访问日志,以确定何时应用规则。

此外,您可以使用 S3 存储类分析来确定从不同存储类检索的数据量。

注意:必须为每个存储桶配置 S3 存储类分析。

审查您的数据检索成本

存储在 S3 标准 – IA、S3 单区 – IA、S3 Glacier 或 S3 Glacier Deep Archive 存储类中的对象具有与数据检索相关的费用。

例如,如果您从 S3 Glacier 存储类检索 1500 万个对象,则请注意检索选项。检索的总成本基于您选择的批量检索选项。

批量检索:

  • 检索请求费用为 15000000 / 1000 * 0.025 USD = 375 USD。
  • 检索费用为 100000 * 0.0025 USD = 250 USD。
  • 总费用为 625 USD。

标准检索:

  • 检索请求费用为 15000000 / 1000 * 0.05 USD = 750 USD。
  • 检索费用为 100000 * 0.01 USD = 1000 USD。
  • 总费用为 1750 USD。

加速检索:

  • 检索请求费用为 15000000 / 1000 * 10 USD = 150000 美元。
  • 检索费用为 100000 * 0.03 USD = 3000 USD。
  • 总费用为 153000 USD。

提示:要帮助您监控不同存储请求和数据使用情况,您还可以使用 S3 Storage Lens 仪表板

跟踪对存储桶发出的请求

您可以通过以下一种或多种方式监控对存储桶的请求:

在了解对存储桶发出的请求后,您可以采取措施来降低请求产生的费用。例如,您可以使用存储桶策略或 AWS Identity and Access Management (IAM) 策略来防止未经授权的访问或限制对存储桶的公开访问。或者,为了降低数据传输费用,您可以使用 Amazon Elastic Compute Cloud (Amazon EC2) 实例访问您的存储桶。Amazon EC2 实例必须位于与您的存储桶处于相同 AWS 区域的 Amazon Virtual Private Cloud (Amazon VPC) 中。

检查存储桶大小的变化

要分离存储成本,您可以将存储桶的当前大小与上个月的存储桶大小进行比较。您可以在 Amazon S3 控制台中查看存储桶的存储大小:

1.    从 Amazon S3 控制台查看您的存储桶。

2.    选择 Management(管理)选项卡。

3.    选择 Metrics(指标)。

您还可以使用 AWS CLI 检查存储桶的存储大小,或者您可以使用 Amazon CloudWatch 监控存储指标。或者,若要每天、每周和每月监控存储桶大小变化,则您还可以使用 S3 Storage Lens。

审查单个存储桶的成本

要确定导致较高成本的特殊存储桶,请在存储桶上激活成本分配标签。然后,使用 AWS Cost Explorer 检查您的存储桶。有关此方法的更多信息,请参阅如何查找我的 Amazon S3 存储桶成本?

了解使用量与费用之间的关系

您的使用情况报告以字节-小时为单位记录存储使用量,而账单报告则以 GB-月为单位记录存储使用量。要了解存储使用量与存储费用之间的关系,必须将字节-小时转换为 GB-月。有关此转换的示例,请参阅了解您的 AWS 账单和 Amazon S3 的使用情况报告

您可以从账单和成本管理控制面板下载 Amazon S3 使用情况报告。或者,要获取详细的存储和账单指标,请为账户中的所有存储桶创建一个 S3 Storage Lens 仪表板。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?