Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

AWS Java SDK 2 S3 copy object

In the version 1 SDK, making a copy request was straightforward with:

new CopyObjectRequest(sourceBucket, sourceKey, destinationBucket, destinationKey)

In the version 2 SDK, the Builder for CopyObjectRequest does not have a clear way to set the source vs destination. There is a copySource(copySource) method which accepts a full path, but there is no obvious way to set the destination bucket or destination key or to set the source bucket and source key normally (without building a full path and dealing with URL encoding).

Their new S3 examples simply leave out how the new copy works and their JavaDoc for CopyObjectRequest has no real information for this.

like image 900
worpet Avatar asked Sep 19 '25 08:09

worpet


2 Answers

They have a pretty good example here on Github: https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javav2/example_code/s3/src/main/java/com/example/s3/CopyObject.java

like image 153
The_Cute_Hedgehog Avatar answered Sep 20 '25 22:09

The_Cute_Hedgehog


It follows the builder pattern now, so read the documentation for the CopyObjectRequest.Builder for more details.

Here's an example as of '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()
  );
like image 32
xtratic - Reinstate Monica Avatar answered Sep 20 '25 22:09

xtratic - Reinstate Monica