验证deleteObject是否实际删除了AWS S3 Java SDK中的对象

时间:2019-08-25 15:37:03

标签: java amazon-web-services amazon-s3 aws-sdk

我有以下方法,该方法可从AWS S3 Bucket删除文件,

  • 如果文件不存在,也不会引发异常
  • 没有成功代码或标志来查看文件是否已成功删除

是否有任何解决方法来应对这种情况。

@Override
public void deleteFile(String fileName) {
    try {
        this.client.deleteObject(builder ->
                builder
                        .bucket(this.bucketName).key(fileName)
                        .build());
    } catch (S3Exception ex) {
        ex.printStackTrace();
    }
}

1 个答案:

答案 0 :(得分:1)

如果请求成功,则删除对象。请注意,由于最终的一致性,不能保证该对象立即消失。您需要检查HTTP状态代码。

AmazonS3 as3 = new AmazonS3();
Status myStatus = as3.DeleteObject(<fill in paramters here>);
if (myStatus.Code >= 200 && myStatus.Code < 300)
{
  // Success
}
else
{
  // Delete Failed

  // Handle specific Error Codes below
  if (myStatus.Description == "AllAccessDisabled")
  {
    // Do something
  }

  if (myStatus.Description == "NoSuchKey")
  {
    // Do something
  }
}

此外,还有一个API可用来检查S3中是否存在对象 didObjectExist

https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/AmazonS3.html#doesObjectExist-java.lang.String-java.lang.String-