【问题标题】:AWS Java SDK 2 S3 copy objectAWS Java SDK 2 S3 复制对象
【发布时间】:2019-06-19 14:38:08
【问题描述】:

在版本 1 SDK 中,发出复制请求很简单:

new CopyObjectRequest(sourceBucket, sourceKey, destinationBucket, destinationKey)

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

他们的new S3 examples 只是忽略了新副本的工作原理,而他们的JavaDoc for CopyObjectRequest 没有这方面的真实信息。

【问题讨论】:

  • 注意:在最初提出这个问题后的某个时候,AWS 更新了他们的 S3 示例,提供了一个副本如何工作的示例。

标签: java amazon-s3 aws-java-sdk-2.x


【解决方案1】:

【讨论】:

【解决方案2】:

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

这是一个基本的例子:

s3.copyObject(CopyObjectRequest.builder()
                                 .copySource(SOURCE_BUCKET_NAME + "/" + SOURCE_KEY)
                                 .destinationBucket(DESTINATION_BUCKET_NAME)
                                 .destinationKey(DESTINATION_KEY)
                                 .build());

【讨论】:

  • 他们的文档没有帮助,因为他们没有指定 bucketkey 用于目标值的任何地方。我想我们应该推断出这一点,因为他们有 copySource 名称中带有“源”,但没有名称中带有“目的地”的方法。不过,似乎比旧方法要清晰得多。
  • @james.garriss 我相信在一年半前回答这个问题时,它们并没有被弃用。感谢您告诉我,我已经更新了答案。
猜你喜欢
  • 2017-06-29
  • 2016-07-24
  • 2019-11-18
  • 2011-09-25
  • 2020-08-08
  • 1970-01-01
  • 2022-10-15
  • 1970-01-01
  • 2019-08-25
相关资源
最近更新 更多