Amazon web services 如何检查AWS S3中是否已存在bucket
如何使用Java SDK检查我的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的可用性,但这不是我需要的。
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是我一直在寻找的东西。非常感谢。:)