aws s3 ls不会列出存储桶中的所有对象

时间:2019-06-18 14:12:03

标签: amazon-web-services amazon-s3

我有一个约有80个对象的s3存储桶,可以从Cloudwatch指标中确认。没有前缀/文件夹。所有对象都在存储桶的根路径中。

当我执行aws s3 ls bucket时,它仅显示当前月份的对象,而不显示全部,而不显示上个月的对象。即使在AWS S3控制台中也是如此。我什至尝试过aws s3 ls bucket --recursive

我在控制台中看到“正在查看24个中的1个”,但是没有用于浏览较旧对象的按钮。

那是为什么?如何查看存储桶中的所有对象?

我的s3存储桶类是标准的。

2 个答案:

答案 0 :(得分:1)

NumberOfObjects的Cloudwatch指标显示当前和非当前对象以及所有不完整的分段上传到存储桶的分段总数。

您可能已在存储桶上启用了Versioning,并且“ s3 ls”仅列出了当前版本,此命令不会返回对象的非当前版本。您可以在S3控制台中单击“显示全部”以查看版本化的对象或列表对象版本,以获取对象的总数。

参考:

Get all versions of an object in an AWS S3 bucket?

https://www.npmjs.com/package/s3-list-all-objects

答案 1 :(得分:1)

您说您相信Cloudwatch指标NumberOfObjects中的数字。这是S3 docs

中对它的定义
  

所有存储类别中存储在存储桶中的对象总数   GLACIER存储类除外。该值的计算公式为   计算存储桶中的所有对象(当前对象和非当前对象)   对象)以及所有不完整多部分的总零件数   上传到存储桶。

因此,您在控制台中查看的内容与指标之间的差异可能是您拥有版本控制功能,并且正在计算旧的(“非当前”)版本

有查看旧版本here

的说明