You can use the S3 PUT Object - Copy request to create a copy of an object that is already stored in S3. A PUT copy operation is the same as performing a GET and then a PUT.
Resolving conflicts
Conflicting client requests, such as two clients writing to the same key, are resolved on a "latest-wins" basis. The timing for the "latest-wins" evaluation is based on when the StorageGRID system completes a given request, and not on when S3 clients begin an operation.
Object size
StorageGRID supports objects up to 5 TB
in size.
Note: The maximum size for objects that can be replicated to a destination bucket by the CloudMirror replication service is 625 GiB (671,088,640,000 bytes). Objects that match the filtering criteria in the CloudMirror replication configuration XML will not be ingested if they are larger than this size.
Storage class options
The x-amz-storage-class request header is supported with the following
values:
- STANDARD
(Default) Specifies a dual-commit ingest operation.
- REDUCED_REDUNDANCY
Specifies a single-commit ingest operation.
Note: You cannot use the REDUCED_REDUNDANCY option if you are ingesting an object into an S3 compliant bucket. This is to ensure that compliance requirements are satisfied (two copies of each object exist) before the object is evaluated by the active ILM policy. See the instructions for administering StorageGRID.
Request headers
The following request headers are supported:
- x-amz-meta-, followed by a name-value pair containing user-defined metadata
- x-amz-metadata-directive: The default value is COPY, which enables you to copy the object and associated metadata.
You can specify REPLACE to overwrite the existing metadata when copying the object, or to update the object metadata.
- x-amz-copy-source
- x-amz-copy-source-if-match
- x-amz-copy-source-if-none-match
- x-amz-copy-source-if-unmodified-since
- x-amz-copy-source-if-modified-since
- x-amz-server-side-encryption
- x-amz-storage-class
- x-amz-tagging-directive: The default value is COPY, which enables you to copy the object and all tags.
You can specify REPLACE to overwrite the existing tags when copying the object, or to update the tags.
The following request headers are not supported and return XNotImplemented:
- x-amz-server-side-encryption-customer-algorithm
- x-amz-server-side-encryption-customer-key
- x-amz-server-side-encryption-customer-key-MD5
- x-amz-website-redirect-location
If the source bucket and key, specified in the
x-amz-copy-source header, is different from the destination bucket and key, a copy of the source object data is written to the destination. If the source and destination match, and the
x-amz-metadata-directive header is specified as
REPLACE, the object’s metadata is updated with the metadata values supplied in the request.
Note: The server-side-encryption value of the object cannot be updated. Instead, make a copy with a new server-side-encryption value using x-amz-metadata-directive: REPLACE.
Versioning
If the source bucket is versioned, you can use the x-amz-copy-source header to copy the latest version of an object. To copy a specific version of an object, you must explicitly specify the version to copy using the versionId subresource. If the destination bucket is versioned, the generated version is returned in the x-amz-version-id response header. If versioning is suspended for the target bucket, then x-amz-version-id returns a "null" value.