【问题标题】:AWS Java SDK: check if an object exists with a specific version in an S3 bucketAWS Java SDK:检查 S3 存储桶中是否存在具有特定版本的对象
【发布时间】:2018-03-18 13:39:56
【问题描述】:
我知道有一个doesObjectExist方法可以检查指定存储桶中是否存在对象,但是如何检查S3存储桶中是否存在具有特定版本的对象? p>
我想打电话给doesObjectExist(bucketName, objectName, s3Version)。
有什么办法可以做到这一点,还是我需要先调用listVersions 并使用VersionListing 检查版本是否存在?这种方法似乎更加冗长。
【问题讨论】:
标签:
java
amazon-web-services
amazon-s3
aws-java-sdk
【解决方案1】:
当前 API 中没有一步检查。您可以尝试使用类似的东西
s3Client.getObjectMetadata(
new GetObjectMetadataRequest(bucketName, key, versionId)
)
但是我看不到任何可靠的方法可以知道何时不存在此类对象(因为这种情况没有特殊的“对象不存在”例外)。所以在它失败后你应该用doesObjectExist检查这个对象是否存在。或者另一种方式:检查它是否存在,然后用版本查询元数据,如果存在但元数据请求失败,则该版本的对象不存在。