检查 S3 复制操作是否成功?

Jam*_*hon 5 java amazon-s3

我正在尝试使用 Amazon S3 Java API 实现移动操作。

我遇到的问题是CopyObjectResultAmazonS3Client.copyObject方法返回的对象似乎没有明确指示操作是否成功。

鉴于此操作后我将删除一个文件,我想确保操作成功。

有什么建议?

Jam*_*hon 5

这就是我最终做的,

def s3 = createS3Client(credentials)
def originalMeta = s3.getObjectMetadata(originalBucketName, key)
s3.copyObject(originalBucketName, key, newBucketName, newKey)
def newMeta = s3.getObjectMetadata(newBucketName, newKey)

// check that md5 matches to confirm this operation was successful
return originalMeta.contentMD5 == newMeta.contentMD5
Run Code Online (Sandbox Code Playgroud)

请注意,这是 Groovy 代码,但它与 Java 代码的工作方式极为相似。

我不喜欢必须进行两个额外的操作来检查元数据,所以如果有任何方法可以更有效地执行此操作,请告诉我。

  • 由于 S3 没有立即一致性,这个方法会不会偶尔显示对象没有被复制,即使它已经复制了? (2认同)