AWS Java SDK 2 S3 复制对象

AWS Java SDK 2 S3 copy object

在第 1 版 SDK 中,通过以下方式发出复制请求非常简单:

new CopyObjectRequest(sourceBucket, sourceKey, destinationBucket, destinationKey)

在版本 2 SDK 中,CopyObjectRequestBuilder 没有明确的方式来设置源与目标。有一个接受完整路径的 copySource(copySource) 方法,但是没有明显的方法来设置目标桶或目标键或正常设置源桶和源键(不构建完整路径和处理 URL编码)。

他们的 new S3 examples simply leave out how the new copy works and their JavaDoc for CopyObjectRequest 没有这方面的真实信息。

它现在遵循构建器模式,因此请阅读 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()
  );

他们在 Github 上有一个很好的例子:https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javav2/example_code/s3/src/main/java/com/example/s3/CopyObject.java

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

使用

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