Com*_*cau 4 java amazon-s3 amazon-web-services aws-sdk-java-2.0
我正在搜索如何使用 AWS SDK for Java 版本 2 删除 S3文件夹。我只找到了 AWS SDK 版本 1 示例。
我知道S3是一个对象存储,并且不存在文件夹的概念。我在这里的意思是:
DeleteObjectsRequest以便能够在对 AWS API 的单个 HTTP 调用中删除最多 1000 个对象当我搜索示例时,我经常返回此页面: https: //docs.aws.amazon.com/AmazonS3/latest/dev/DeletingMultipleObjectsUsingJava.html,这似乎是 AWS SDK for Java 的版本 1即被使用。至少,就我而言,我导入了AWS SDK 2,并且无法直接实例化DeleteObjectsRequest,如此例中所示。我被迫使用构建器,然后我找不到相同的方法来指定要删除的键列表。
我设法让它与下面的代码一起工作。
但我发现这种做法相当麻烦,我仍然想向社区核实这是否是正确的做法。S3Object我特别发现从一个集合到另一个集合ObjectIdentifier以及所需的构建器链的需要非常麻烦。为什么DeleteObjectsRequest构建器不简单地允许指定字符串集合作为要删除的对象的键?
public static void deleteS3Objects(String bucket, String prefix) {
ListObjectsV2Request request = ListObjectsV2Request.builder().bucket(bucket).prefix(prefix).build();
ListObjectsV2Iterable list = s3Client.listObjectsV2Paginator(request);
for (ListObjectsV2Response response : list) {
List<S3Object> objects = response.contents();
List<ObjectIdentifier> objectIdentifiers = objects.stream().map(o -> ObjectIdentifier.builder().key(o.key()).build()).collect(Collectors.toList());
DeleteObjectsRequest deleteObjectsRequest = DeleteObjectsRequest.builder().bucket(bucket).delete(Delete.builder().objects(objectIdentifiers).build()).build();
s3Client.deleteObjects(deleteObjectsRequest);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3381 次 |
| 最近记录: |