我正在尝试检查存在桶是否存在,如果存在则删除它,如果不存在错误。
使用AmazonClientBuilder
类,我使用doesBucketExist
方法检查存储桶是否存在,并使用deleteBucket
方法删除该存储桶(如果存在)。如果它不存在就说明它。
注意:我已确保完全有权访问存储桶上的所有操作。
但是当我运行代码时,输出只显示存储桶名称,但是如果它被删除则不显示。要验证是否删除了存储桶,我正在执行System.out.println
,以便显示该存储桶已在屏幕上删除。
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.AmazonS3Exception;
public class DeleteBucket
{
private static String bucketName = "mycalibucket1";
public static void main(String[] args)
{
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withRegion(Regions.US_WEST_2)
.build();
try
{
if(s3Client.doesBucketExist(bucketName))
{
System.out.printf("\n",bucketName," exists");
s3Client.deleteBucket(bucketName);
System.out.println("----------------------------------------------");
System.out.printf("\n",bucketName," is deleted.");
}
}
catch(AmazonS3Exception e)
{
System.out.printf(bucketName," does not exist.");
System.exit(1);
}
}
}
输出:
mycalibucket1
有人能帮助我吗?
答案 0 :(得分:0)
如果您没有到达第2和第3个打印报表,您的代码必须抛出除AmazonS3Exception之外的异常。
观看APi javadoc,http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/AmazonS3.html#deleteBucket-java.lang.String-
看起来你正在调用的deleteBucket方法可能抛出2个不同的运行时异常,这两个异常都不是从AmazonS3Exception派生的。尝试捕捉com.amazonaws.AmazonClientException,这看起来两者都很常见。看看它告诉你什么,你也许能够找出造成问题的原因。
文档还注意到存储桶必须为空才能删除。