Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 如何检查AWS S3中是否已存在bucket_Amazon Web Services_Amazon S3_Aws Java Sdk_Aws Java Sdk 2.x - Fatal编程技术网

Amazon web services 如何检查AWS S3中是否已存在bucket

Amazon web services 如何检查AWS S3中是否已存在bucket,amazon-web-services,amazon-s3,aws-java-sdk,aws-java-sdk-2.x,Amazon Web Services,Amazon S3,Aws Java Sdk,Aws Java Sdk 2.x,如何使用Java SDK检查我的Aws S3帐户中是否已经存在bucket 使用下面的代码 AmazonS3ClientBuilder.defaultClient().doesBucketExistV2(bucketName); 检查bucket的全局存在性,如果具有此名称的bucket全局存在,则返回true,即使我不是该bucket的所有者或我没有访问该bucket的权限 我理解以这种方式创建此方法的意图,以便它允许我们确定bucket name的可用性,但这不是我需要的。

如何使用Java SDK检查我的Aws S3帐户中是否已经存在bucket

使用下面的代码

        AmazonS3ClientBuilder.defaultClient().doesBucketExistV2(bucketName);
检查bucket的全局存在性,如果具有此名称的bucket全局存在,则返回true,即使我不是该bucket的所有者或我没有访问该bucket的权限

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

我想检查我的S3帐户中是否存在名为的bucket,以便我可以对其执行操作

一个可能的解决方案是列出所有bucket,然后在返回的列表中搜索我的bucket,我觉得这不是一个好的性能(如果我错了,请纠正我),因为可能有数十万个bucket,在其中搜索效率不高


如何确定我的S3帐户中是否存在未检查全局存在性的存储桶?

如注释
中所述,存储桶执行此任务

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

    try {
        s3Client.headBucket(headBucketRequest);
        return true;
    } catch (NoSuchBucketException e) {
        return false;
    }

HeadBucket
api是否满足您的需要?我不认为“全局”意味着它返回S3帐户之外的存储桶,只是它们没有像很多AWS那样的区域resources@mattfreake基本上,假设我的S3帐户没有名为“mybucket”的bucket,上面共享的代码片段返回true,因为
globe
中的其他人实际上有一个名为“mybucket”的bucket。当然,它不会返回我的bucket或它的内容,但它会返回true,因为存在具有此名称的bucket。首先,您需要对S3 bucket拥有权限,否则无法访问该bucket。然后,挑战将是它是否与您的凭据实际位于同一个帐户中—例如,您的凭据可能有权访问其他帐户中的存储桶。看看
getBucketAcl()
@jellycsc是的,headBucket api是我一直在寻找的东西。非常感谢。:)