Copy an object from your S3 account. You can copy an object within a single bucket, or between buckets, and can optionally update the object's metadata at the same time.
This method cannot be performed by anonymous services. You must have read access to the source object and write access to the destination bucket.
An object can be copied over itself, in which case you can update its metadata without making any other changes.
@param sourceBucketName the name of the bucket that contains the original object.
@param sourceObjectKey the key name of the original object.
@param destinationBucketName the name of the destination bucket to which the object will be copied.
@param destinationObject the object that will be created by the copy operation. If this item includes an AccessControlList setting the copied object will be assigned that ACL, otherwise the copied object will be assigned the default private ACL setting.
@param replaceMetadata If this parameter is true, the copied object will be assigned the metadata values present in the destinationObject. Otherwise, the copied object will have the same metadata as the original object.
@param ifModifiedSince a precondition specifying a date after which the object must have been modified, ignored if null.
@param ifUnmodifiedSince a precondition specifying a date after which the object must not have been modified, ignored if null.
@param ifMatchTags a precondition specifying an MD5 hash the object must match, ignored if null.
@param ifNoneMatchTags a precondition specifying an MD5 hash the object must not match, ignored if null.
@return a map of the header and result information returned by S3 after the object copy. The map includes the object's MD5 hash value (ETag), its size (Content-Length), and update timestamp (Last-Modified).
@throws S3ServiceException