为什么我的 Amazon S3 的 CloudWatch 指标与 AWS CLI 存储指标之间存在差异?

上次更新日期:2021 年 12 月 3 日

我发现 Amazon Simple Storage Service (Amazon S3) 的 Amazon CloudWatch 指标与 AWS Command Line Interface (AWS CLI) 存储指标之间存在差异。两个源之间报告的存储大小为何存在如此大差异?

简短描述

如果 Amazon S3 的 CloudWatch 存储直播啊与使用 AWS CLI 计算的指标之间存在差异,请检查以下内容:

  • 对象版本控制
    注意:Amazon S3 中的对象版本控制功能会在您的存储桶中保留对象的多个版本。默认情况下,存储桶上的 Amazon S3 对象版本控制处于禁用状态,您必须明确启用该功能。此外,AWS CLI 存储指标计算只会对存储桶中存储的每个对象的最新版本和大小计数。
  • 未完成的分段上传。
    注意:不完成的分段上传不会包括在 AWS CLI 存储计算中,但会在 CloudWatch 计算中计算为存储。

要确定报告差异的原因,请检查您是否启用了对象版本控制,然后在存储桶中查找是否存在分段上传。这两个因素可能会导致 CloudWatch 中计算出的存储桶大小值增加。有关更多信息,请参阅 Amazon S3 CloudWatch 存储桶每日存储指标

提示:如果您在 Amazon S3 中有未完成的分段上传,请考虑创建生命周期配置规则。此生命周期配置规则会自动清理任何未完成的部分,从而降低数据存储成本。请注意,生命周期规则是异步运行的,因此操作可能会延迟。但是,一旦对象被标记为删除,您就不需要支付存储费用(即使对象尚未移除)。

此外,Amazon S3 监控指标每天记录一次,因此可能不会显示最新的信息。同时,CloudWatch 实时监控您的 AWS 资源和应用程序

解决方法

CloudWatch 中的每日存储指标

在 CloudWatch 中,BucketSizeBytes 指标可捕获所有 Amazon S3 和 Amazon S3 Glacier 存储类型、对象版本以及任何未完成的分段上传。该值的计算方法是汇总所有对象大小、存储桶中的元数据(包括当前和非当前对象)以及任何未完成的分段上传大小。例如,BucketSizeBytes 指标将hi计算所有这些对象存储类中存储在 S3 存储桶中的数据量(以字节为单位):

  • S3 Standard
  • S3 智能分层
  • S3 标准 – IA
  • S3 One Zone-IA
  • S3 低冗余存储
  • S3 Glacier Deep Archive
  • S3 Glacier

此外,CloudWatch 中的 NumberOfObjects 指标包含存储在存储桶中的所有存储类的对象总数。此值将会对存储桶中的所有对象(现有和非现有)以及任何未完成分段上传部分的总数进行计数。NumberOfObjects 指标还会计算存储桶中的所有版本对象的对象总数。例如,如果您有同一对象的两个版本,则这两个版本将计为两个单独的对象。有关更多信息,请参阅指标和维度

使用 AWS CLI 进行每日存储计算

要使用 AWS CLI 计算 Amazon S3 的存储指标,请使用以下命令语法:

aws s3 ls --summarize --human-readable --recursive s3://bucketname | grep -i total

此命令语法用于计算 Amazon S3 存储桶中对象的总数和大小。但是,请注意,只会计算存储桶中存储的每个对象的当前版本(及其大小)。每个对象的分段上传、删除标记和非当前版本不会计入存储桶总大小或对象总数中。

未完成的分段上传

aws s3api list-multipart-uploads --bucket <bucket-example>

然后,使用 list-parts 命令和您的 UploadId 值列出分段上传中的所有对象:

aws s3api list-parts --bucket <bucket-example> --key large_test_file --upload-id <examplevalue>

创建生命周期规则

要自动删除分段上传,请创建生命周期配置规则。请按照以下步骤执行操作:

1.    打开 Amazon S3 控制台。

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

3.    选择 Create new policy(创建新策略)。

4.    添加策略的名称。

5.    选择 Select - Delete expired delete markers or incomplete multipart uploads(选择 - 删除过期的删除标记或未完成的分段上传)。

6.    (可选)如果您的存储桶未受版本控制,请选择 Delete incomplete multipart uploads(删除未完成的分段上传)。

对象版本控制

要查看和审核您的 Amazon S3 存储桶中是否存在不同版本的对象,请使用 Amazon S3 清单列表。Amazon S3 清单列表文件包含源存储桶中的对象列表以及每个对象的元数据。清单列表文件将捕获存储桶名称、对象大小、存储类别和版本 ID 之类的元数据。


这篇文章对您有帮助吗?


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