getObjectSummaries 会获取存储在 S3 存储桶中的对象的数量吗?

Will getObjectSummaries get the count of objects stored in a S3 Bucket?

我需要知道 S3 存储桶中存储的文件数量。目前,ObjectListing 没有 countnumberOfObject.

等方法

但是,它有一个方法可以 return 一个 S3ObjectSummary 的列表。

public java.util.List<S3ObjectSummary> getObjectSummaries()

因为它是一个 List,我可以调用 size() 方法但是假设 getObjectSummaries() 列表的大小与存储在桶下?

不——更准确的说法是 getObjectSummaries() 的大小是您收到的来自 listObjects() 的结果页面中的对象数。否则,是的——列表中的每个对象摘要应该对应于一个 S3 对象是正确的。

AWS 将大型结果集的结果分页为每页 1,000 个结果。在一般情况下,您需要多次进行此调用:

  • 如果isTruncated() is true, call getNextMarker() to get the next marker to use in your next ListObjectsRequest to listObjects().

  • 如果为 false,您收到的最后一个响应将是您需要处理的最后一个响应。此时您可以完成对象的计数。

考虑到这一点,这对于非常大的存储桶来说不是一个很好的解决方案,因为您必须枚举整个存储桶。您可以从 Java.

呼叫 an alternative solution using s3cmd