getObjectSummaries会获得存储在S3 Bucket中的对象的数量吗?

时间:2015-01-23 15:49:17

标签: java amazon-web-services amazon-s3 aws-sdk

我需要知道S3存储桶下存储的文件数量。目前,ObjectListing没有countnumberOfObject等方法。

但是,它有一个返回S3ObjectSummary列表的方法。

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

由于它是List,我可以调用size()方法,但是假设getObjectSummaries() List的大小与存储的对象数相同是正确的吗?在桶下?

1 个答案:

答案 0 :(得分:1)

否 - 更准确地说,getObjectSummaries()的大小是您收到的listObjects()结果页面中的对象数量。否则,是 - 列表中的每个对象摘要都应对应于S3对象是正确的。

AWS将大型结果集的结果分页到每页1,000个结果。在一般情况下,您需要多次拨打此电话:

  • 如果isTruncated()为真,请致电getNextMarker()以获取下一个要在listObjects()的ListObjectsRequest中使用的标记。

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

考虑到这一点,这对于非常大的存储桶来说不是一个很好的解决方案,因为你必须枚举整个存储桶。这是an alternative solution使用s3cmd您可以从Java调用的。{/ p>