博主介绍:✌全网粉丝21W+,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌
技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物联网、机器学习等设计与开发。
感兴趣的可以先关注收藏起来,在工作中、生活上等遇到相关问题都可以给我留言咨询,希望帮助更多的人。
AmazonS3 getAllObjectsByPrefix方法 返回数据只有1000条
Amazon S3
的getAllObjectsByPrefix()
方法通常用于获取指定前缀的所有对象。但是,默认情况下,当你试图获取大量对象时(例如,数千个),Amazon S3 API
可能会限制结果的数量到最多1000个。这是因为S3 API
设计为分页结果,默认一次最多返回1000个对象。
要获取所有匹配前缀的对象,你需要进行多次调用,并递归地获取下一页,直到没有更多的对象。以下是使用AWS SDK for Java
进行此操作的示例代码:
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.model.ListObjectsRequest;
import com.amazonaws.services.s3.model.ListObjectsV2Request;
import com.amazonaws.services.s3.model.ListObjectsV2Result;
import com.amazonaws.services.s3.model.S3ObjectSummary;public List<S3ObjectSummary> getAllObjectsByPrefix(AmazonS3 s3Client, String bucketName, String prefix) {ListObjectsV2Request request = new ListObjectsV2Request().withBucketName(bucketName).withPrefix(prefix);List<S3ObjectSummary> objectSummaries = new ArrayList<>();ListObjectsV2Result result;do {result = s3Client.listObjectsV2(request);objectSummaries.addAll(result.getObjectSummaries());request.setContinuationToken(result.getNextContinuationToken());} while (result.isTruncated());return objectSummaries;
}
在这个例子中,我们使用了listObjectsV2()
方法,它是listObjects()
的增强版本,支持分页,并且没有对结果数量的硬性限制。我们通过循环检查isTruncated()
方法的结果,当结果被截断(即还有更多的对象)时,我们获取下一个续集的token并继续查询,直到没有更多的对象为止。这样,我们就可以获取所有匹配前缀的对象。
好了,今天分享到这里。希望你喜欢这次的探索之旅!不要忘记 “点赞” 和 “关注” 哦,我们下次见!🎈
本文完结!
祝各位大佬和小伙伴身体健康,万事如意,发财暴富,扫下方二维码与我一起交流!!!