跳至内容

如何降低 Amazon S3 的意外高昂成本?

2 分钟阅读
0

我的 AWS 账单上的 Amazon Simple Storage Service (Amazon S3) 使用量高于我的预期。我想降低成本。

简短描述

要确定您产生了哪种类型的 Amazon S3 费用,请查看您当前的 Amazon S3 账单和使用量。您还可以使用 AWS 使用情况报告来查看产生费用的 S3 存储桶。

根据使用类型,使用以下方法来帮助您了解账单:

解决方法

**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI

要降低您的 Amazon S3 账单成本,请执行以下操作。

删除未完成的分段上传

启动分段上传后,Amazon S3 会保留文件的所有上传分段,直到您完成或结束分段上传。如果您未完成分段上传,则 Amazon S3 将继续存储上传的分段,并向您收取存储费用。

当您运行 abort-multipart-upload AWS CLI 命令以结束分段上传时,该命令会删除未完成的上传分段。但是,当您结束分段上传时,其他工具可能会保留未完成的上传分段。

要删除不完整的分段上传,请遵循以下最佳实践:

删除对象的先前版本

**重要事项:**Amazon S3 无法恢复您从存储桶中删除的数据。

如果您在存储桶上启用了 S3 版本控制功能,则每个对象可以有多个版本,这会增加您的存储成本。

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

在已激活版本的存储桶中,必须指定对象版本 ID 才能永久删除对象版本。如果您对该对象运行删除请求,则 Amazon S3 会为该对象添加删除标记。删除标记会成为对象的当前版本,而对象会成为先前版本。但是,Amazon S3 不会删除该对象及其版本。

要管理对象版本,请执行以下操作:

查看您的存储类变更成本

当您将对象从一种存储类更改为另一种存储类时,就可能会产生成本。

此外,对于您存储在 Amazon S3 Glacier Flexible Retrieval 和 Amazon S3 Glacier Deep Archive 中的每个存档对象,AWS 还会收取 40KB 的额外元数据费用。按 S3 标准费率向您收取 8KB 的费用,按 S3 Glacier Flexible Retrieval 或 S3 Deep Archive 费率收取 32KB 的费用。

有关详细信息,请参阅使用 Amazon S3 生命周期转换对象

最佳做法是将多个小对象聚合成几个大型对象以降低开销成本。

如果您设置了一个生命周期配置规则,基于此规则将整个存储桶的对象转换为另一种存储类,则会产生 Amazon S3 费用。要确定生命周期规则是否导致成本增加,请查看您的 AWS CloudTrail 事件历史记录PutBucketLifecycleConfiguration 调用的 Amazon S3 服务器访问日志。此外,请查看 S3 生命周期操作的日志。

为了优化存储成本,最佳做法是使用 S3 Intelligent-Tiering 存储类,该类可根据您的访问要求自动移动数据。

您还可以使用 S3 存储类分析来确定每个存储类中有多少数据。

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

查看您的数据检索成本

您存储在以下存储类中的对象会产生数据检索成本:

  • S3 Standard-IA
  • S3 One Zone-IA
  • S3 Glacier Flexible Retrieval
  • S3 Glacier Deep Archive 存储类

例如,如果您从 S3 Glacier Flexible Retrieval 存储类检索对象,则检索费用取决于您的批量检索选项。标准检索的总成本低于加速检索的总成本。

对于存储在 S3 Glacier Flexible Retrieval 中的对象,批量检索不收取任何费用。为了帮助您监控不同的存储请求和数据使用情况,请使用 S3 Storage Lens 存储统计管理工具控制面板

监控对您的存储桶的请求

使用以下方法监控对存储桶的请求并查看大量请求产生的费用:

为了降低数据传出费用所产生的成本,您可以使用 Amazon Elastic Compute Cloud (Amazon EC2) 实例访问您的存储桶。Amazon EC2 实例必须位于与您的存储桶相同的 AWS 区域内的 Amazon Virtual Private Cloud (Amazon VPC) 中。

查看存储桶大小的变化

您可以使用 S3 控制台、AWS CLI 命令或 CloudWatch 查看存储桶大小的变化。

要在控制台中比较当前和先前的存储桶大小,请完成以下步骤:

  1. 打开 Amazon S3 控制台
  2. 选择 Buckets(存储桶),然后选择您的存储桶。
  3. 选择 Management(管理)选项卡。
  4. 选择 Metrics(指标)。

然后,运行以下 ls AWS CLI 命令:

aws s3 ls --summarize --human-readable --recursive s3:///bucket-name

**注意:**请将 bucket-name 替换为您的存储桶名称。

输出示例:

2021-10-07 21:32:57 452 Bytes foo/bar/car/petrol
2021-10-07 21:32:57 896 Bytes foo/bar/truck/diesel
2021-10-07 21:32:57 189 Bytes foo/bar/hybrid/battery
2021-10-07 21:32:57 398 Bytes vehicles.txt

Total Objects: 4
Total Size: 2.9 MiB

您还可以使用 CloudWatch 监控您的存储指标。要监控每天、每周和每月的存储桶大小变化,请使用 S3 Storage Lens 存储统计管理工具。

查看各个存储桶的成本

要确定产生更高成本的存储桶,请激活存储桶上的成本分配标签。然后,使用 AWS Cost Explorer 成本管理服务查看您的存储桶。有关详细信息,请参阅如何查找我的 Amazon S3 存储桶的成本?

了解您的使用情况与您的费用有何关系

您的使用情况报告以字节每小时为单位记录存储使用情况,账单报告以千兆字节每月为单位记录存储使用情况。要了解存储使用情况与存储费用之间的关系,请将字节每小时转换为 GB 每月。要查看转换示例,请参阅 Amazon S3 常见问题解答中的 Amazon S3 的使用将如何收费和计费?

您可以从 AWS 账单与成本管理控制面板下载您的 Amazon S3 使用情况报告。或者,创建 S3 Storage Lens 存储统计管理工具控制面板以获取详细的存储和账单指标。

相关信息

Amazon S3 定价

如何使用 Athena 分析我的 Amazon S3 服务器访问日志?

AWS 官方已更新 5 个月前