我最近使用 aws s3 控制台中“管理”选项卡下的指标,发现我的一些存储桶的 NumberOfObjects(计数/天)图表似乎偏离很大。每个存储桶中大约有 50 个对象,但显示的数量超过 100 个。
经过一些 cli 命令后,我能够接近确定这个数字。将当前显示的对象数 + 版本 + 已删除的对象 + 分段上传的部分相加,我能够始终如一地得到显示的数字 - 2。
例如,对于我的两个存储桶:存储桶 #1 在云监控指标中显示了 186 个对象,但控制台仅显示了 44 个对象。有 9 个删除标记、8 个以前的版本和一个多部分 123 部分上传。44 + 9 + 8 + 123 = 184。存储桶 #2 在云监控指标中显示了 78 个对象。控制台显示 8 个,其中有 22 个以前的版本、8 个删除标记和一个 38 部分上传。8 + 22 + 8 + 38 = 76。
这种情况不仅仅发生在这两个存储桶中。在 s3 cloudwatch 指标中,什么算作对象?我的初步计算是否正确,还是这只是一个不太可能的巧合?
答案1
我确信你已经发现了一些问题。
你所看到的肯定是有道理的一切在存储桶中被视为一个对象......它们都是存储桶索引中的条目。
至于 off-by-two 错误,存储桶策略、存储桶 ACL、网站重定向配置、生命周期策略、事件通知配置、CORS……任何这些或其他“配置”元素都可能被视为对象,以及分段上传可能对于某种逻辑“容器”,可算作部分数 + 1。
最后一部分是推测,因为我不记得在文档中看到过它的详细说明...但考虑到从外部已知的信息——桶索引(本质上是一个按词汇排序的数据库)和后备存储是离散的组件——S3 将其算作是完全合理的一切在向 CloudWatch 报告其统计信息时,该对象位于存储桶索引中,无论人类是否自然地将它们算作“实际对象”。