如何为AWS ListObjectsV2Request对象设置next continuation token
你代码的问题出在延续令牌的设置逻辑上:AWS SDK for Java 2.x 中的所有请求对象都是不可变的,ListObjectsV2Request的toBuilder()方法会返回一个全新的构建器实例,不会修改原有的请求对象。你现有代码中调用req.toBuilder().continuationToken(...)之后没有将新构建的请求赋值回原变量,导致每次循环发起的都是不带延续令牌的初始请求,所以一直返回相同的前2个对象。
修改后的可用代码如下:
ListObjectsV2Request req = ListObjectsV2Request.builder() .bucket(S3_BUCKET_NAME) .prefix(pathBuilder.toString()) .maxKeys(2) .build(); ListObjectsV2Response result; do { result = s3Client.listObjectsV2(req); for (S3Object s3Object : result.contents()) { System.out.printf(" - %s (size: %d)\n", s3Object.key(), s3Object.size()); } // 将新构建的带延续令牌的请求赋值回req变量 req = req.toBuilder() .continuationToken(result.nextContinuationToken()) .build(); } while (result.isTruncated());
内容的提问来源于stack exchange,提问作者Meena Chaudhary
相关产品推荐
相关产品推荐

