AWS Java SDK:检查 S3 存储桶中是否存在具有特定版本的对象

AWS Java SDK: check if an object exists with a specific version in an S3 bucket

我知道有一种 doesObjectExist 方法可以检查指定存储桶中是否存在对象,但是如何检查 具有特定版本 的对象是否存在在 S3 存储桶中?

我想打电话给doesObjectExist(bucketName, objectName, s3Version)

我有什么办法可以做到这一点,还是我需要先调用 listVersions 并使用 VersionListing 检查版本是否存在?这种方法似乎更冗长。

当前API没有一步检查。你可以尝试使用像

这样的东西
s3Client.getObjectMetadata(
  new GetObjectMetadataRequest(bucketName, key, versionId)
)

但是我没有看到任何可靠的方法来知道何时不存在这样的对象(因为对于这种情况没有特殊的 "object doesn't exist" 例外)。所以在它失败后你应该检查这个对象是否存在doesObjectExist。或者换个方式:检查它是否存在,然后用版本查询元数据,如果存在但元数据请求失败,则该对象的版本不存在。