AWS Java SDK 2 S3复制对象

4
在1版SDK中,使用以下方法请求复制是很简单的:
new CopyObjectRequest(sourceBucket, sourceKey, destinationBucket, destinationKey)

在版本2 SDK中,CopyObjectRequestBuilder没有明确的方法来设置源和目标。虽然有一个接受完整路径的copySource(copySource)方法,但没有明显的方法来设置目标存储桶或目标键以及正常设置源存储桶和源键(而不必构建完整路径和处理URL编码)。
他们的新S3示例简单地省略了新复制功能的工作方式,而他们的CopyObjectRequestJavaDoc对此也没有实质性的信息。

注意:在最初提出此问题后不久,AWS更新了其S3示例,并提供了复制操作的示例。 - worpet
3个回答

2

现在它遵循了建造者模式,因此请阅读CopyObjectRequest.Builder的文档以获取更多详细信息。

以下是截至'AWS SDK for Java' v2.17.166的示例:


  s3.copyObject(
    CopyObjectRequest.builder()
      .sourceBucket(SOURCE_BUCKET_NAME)
      .sourceKey(SOURCE_KEY)
      .destinationBucket(DESTINATION_BUCKET_NAME)
      .destinationKey(DESTINATION_KEY)
      .build()
  );

1
他们的文档并没有提供有用的信息,因为他们没有明确指出 bucketkey 是用于目标值的。我猜想我们应该推断这一点,因为他们在 copySource 中使用了 "source",但是没有任何带有 "destination" 的方法。看起来比以前的方式不太清晰。 - worpet
1
bucketkey 方法都已被弃用:https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/model/CopyObjectRequest.Builder.html - james.garriss
@james.garriss 我相信在一年半前回答这个问题的时候它们还没有被弃用。感谢您让我知道,我已经更新了答案。 - xtratic
1
现在(至少在AWS SDK for Java的2.17.165版本中)...copySource(String)已被弃用。请使用CopyObjectRequest.builder().sourceBucket(SOURCE_BUCKET_NAME).sourceKey(SOURCE_KEY).destinationBucket(DESTINATION_BUCKET_NAME).destinationKey(DESTINATION_KEY).build() - Camille
@Camile 谢谢,我已经更新了答案以遵循API的更改。 - xtratic

2

看起来他们的示例不完全正确,因为他们的文档提到源值“必须进行URL编码”,但是他们在这里没有对其进行编码。如果键名中有特殊字符,似乎会失败。 - worpet
注意:AWS最终更新了他们的示例:https://github.com/awsdocs/aws-doc-sdk-examples/commit/ca698d2407e23351215de3cecadddbda8d1a137e#diff-04a531169b97e0279b78950d7d4f96b3 - worpet
更新示例的正确 URL:https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javav2/example_code/s3/src/main/java/com/example/s3/CopyObject.java - james.garriss

0

在 AWS SDK for Java 的 2.17.165 版本中,copySource(String) 已被弃用。

请使用

CopyObjectRequest.builder()
.sourceBucket(SOURCE_BUCKET_NAME)
.sourceKey(SOURCE_KEY)
.destinationBucket(DESTINATION_BUCKET_NAME)
.destinationKey(DESTINATION_KEY)
.build()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接