code: public Copy copy(String sourceBucketName, String sourceKey,
              String destinationBucketName, String destinationKey)
              throws AmazonServiceException, AmazonClientException {
          return copy(new CopyObjectRequest(sourceBucketName, sourceKey,
                  destinationBucketName, destinationKey));
      }
docs: <p>
  Schedules a new transfer to copy data from one Amazon S3 location to
  another Amazon S3 location. This method is non-blocking and returns
  immediately (before the copy has finished).
  </p>
  <p>
  <code>TransferManager</code> doesn't support copying of encrypted objects
  whose encryption materials are stored in an instruction file.
  </p>
  <p>
  Use the returned <code>Copy</code> object to check if the copy is
  complete.
  </p>
  <p>
  If resources are available, the copy request will begin immediately.
  Otherwise, the copy is scheduled and started as soon as resources become
  available.
  </p>
  <p>
  <b>Note:</b> If the {@link TransferManager} is created with a regional S3 client and
  the source & destination buckets are in different regions, use the
  {@link #copy(CopyObjectRequest, AmazonS3, TransferStateChangeListener)} method.
  </p>
  
  @param sourceBucketName
  The name of the bucket from where the object is to be copied.
  @param sourceKey
  The name of the Amazon S3 object.
  @param destinationBucketName
  The name of the bucket to where the Amazon S3 object has to be
  copied.
  @param destinationKey
  The name of the object in the destination bucket.
  
  @return A new <code>Copy</code> object to use to check the state of the
  copy request being processed.
  
  @throws AmazonClientException
  If any errors are encountered in the client while making the
  request or handling the response.
  @throws AmazonServiceException
  If any errors occurred in Amazon S3 while processing the
  request.
  
  @see TransferManager#copy(CopyObjectRequest, AmazonS3, TransferStateChangeListener)