如何检查存储桶是否已存在于 AWS S3 中

Him*_*rma 4 amazon-s3 amazon-web-services aws-java-sdk aws-java-sdk-2.x

如何使用 Java SDK 检查存储桶是否已存在于我的 Aws S3 帐户中?

使用下面的代码

        AmazonS3ClientBuilder.defaultClient().doesBucketExistV2(bucketName);
Run Code Online (Sandbox Code Playgroud)

检查存储桶的全局存在,如果具有此名称的存储桶全局存在,即使我不是此存储桶的所有者或我无权访问该存储桶,也返回 true。

我理解以这种方式制作此方法的意图,以便它允许我们确定存储桶名称的可用性,但这不是我所需要的。当然,它会抛出异常,我以后无法访问它,但它会返回声明具有此名称的存储桶存在。

我想检查我的 S3 帐户中是否存在具有给定名称的存储桶,以便我可以对其执行操作。

一种可能的解决方案可以是list所有存储桶并在返回的列表中搜索我的存储桶,我觉得这在性能方面不是很好(如果我错了,请纠正我),因为可能有成千上万的存储桶并在其中搜索他们效率不高。

如何在不检查全局存在的情况下确定存储桶是否存在于我的 S3 帐户中

Chr*_*tos 5

正如评论headBucket中提到的那样工作。

HeadBucketRequest headBucketRequest = HeadBucketRequest.builder()
            .bucket(bucketName)
            .build();

    try {
        s3Client.headBucket(headBucketRequest);
        return true;
    } catch (NoSuchBucketException e) {
        return false;
    }
Run Code Online (Sandbox Code Playgroud)