Use CopyObject with an AWS SDK - Amazon Simple Storage Service

Use CopyObject with an AWS SDK

The following code example shows how to use CopyObject.

Action examples are code excerpts from larger programs and must be run in context. You can see this action in context in the following code example:

Java
SDK for Java 2.x
Note

There's more on GitHub. Find the complete example and learn how to set up and run in the AWS Code Examples Repository.

Copy an object from a directory bucket to a directory bucket.

import org.slf4j.Logger; import org.slf4j.LoggerFactory; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3.S3Client; import software.amazon.awssdk.services.s3.model.CopyObjectRequest; import software.amazon.awssdk.services.s3.model.CopyObjectResponse; import software.amazon.awssdk.services.s3.model.S3Exception; import java.nio.file.Path; import static com.example.s3.util.S3DirectoryBucketUtils.createDirectoryBucket; import static com.example.s3.util.S3DirectoryBucketUtils.createS3Client; import static com.example.s3.util.S3DirectoryBucketUtils.deleteAllObjectsInDirectoryBucket; import static com.example.s3.util.S3DirectoryBucketUtils.deleteDirectoryBucket; import static com.example.s3.util.S3DirectoryBucketUtils.getFilePath; import static com.example.s3.util.S3DirectoryBucketUtils.putDirectoryBucketObject; /** * Copies an object from one S3 general purpose bucket to one S3 directory * bucket. * * @param s3Client The S3 client used to interact with S3 * @param sourceBucket The name of the source bucket * @param objectKey The key (name) of the object to be copied * @param targetBucket The name of the target bucket */ public static void copyDirectoryBucketObject(S3Client s3Client, String sourceBucket, String objectKey, String targetBucket) { logger.info("Copying object: {} from bucket: {} to bucket: {}", objectKey, sourceBucket, targetBucket); try { // Create a CopyObjectRequest CopyObjectRequest copyReq = CopyObjectRequest.builder() .sourceBucket(sourceBucket) .sourceKey(objectKey) .destinationBucket(targetBucket) .destinationKey(objectKey) .build(); // Copy the object CopyObjectResponse copyRes = s3Client.copyObject(copyReq); logger.info("Successfully copied {} from bucket {} into bucket {}. CopyObjectResponse: {}", objectKey, sourceBucket, targetBucket, copyRes.copyObjectResult().toString()); } catch (S3Exception e) { logger.error("Failed to copy object: {} - Error code: {}", e.awsErrorDetails().errorMessage(), e.awsErrorDetails().errorCode(), e); throw e; } }
  • For API details, see CopyObject in AWS SDK for Java 2.x API Reference.

For a complete list of AWS SDK developer guides and code examples, see Developing with Amazon S3 using the AWS SDKs. This topic also includes information about getting started and details about previous SDK versions.