使用Java

时间:2017-09-12 17:51:16

标签: java amazon-web-services amazon-s3 bucket

我正在尝试检查存在桶是否存在,如果存在则删除它,如果不存在错误。

使用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

有人能帮助我吗?

1 个答案:

答案 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,这看起来两者都很常见。看看它告诉你什么,你也许能够找出造成问题的原因。

文档还注意到存储桶必须为空才能删除。