Skip to main content

Upload Part - Copy


The Upload Part - Copy operation uploads a part of an object by copying data from an existing object as the data source.

The Upload Part - Copy operation is implemented with all Amazon S3 REST API behavior. Subject to change without notice.

This request reads and writes the object data specified in x-amz-copy-source-range within the StorageGRID system.

The following request headers are supported:

  • 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

Request headers for server-side encryption

If you specified SSE-C encryption for the Initiate Multipart Upload request, you must also include the following request headers in each Upload Part - Copy request:

  • x-amz-server-side-encryption-customer-algorithm: Specify AES256.

  • x-amz-server-side-encryption-customer-key: Specify the same encryption key that you provided in the Initiate Multipart Upload request.

  • x-amz-server-side-encryption-customer-key-MD5: Specify the same MD5 digest that you provided in the Initiate Multipart Upload request.

If the source object is encrypted using a customer-provided key (SSE-C), you must include the following three headers in the Upload Part - Copy request, so the object can be decrypted and then copied:

  • x-amz-copy-source​-server-side​-encryption​-customer-algorithm: Specify AES256.

  • x-amz-copy-source​-server-side-encryption-customer-key: Specify the encryption key you provided when you created the source object.

  • x-amz-copy-source​-server-side-encryption-customer-key-MD5: Specify the MD5 digest you provided when you created the source object.

Important The encryption keys you provide are never stored. If you lose an encryption key, you lose the corresponding object. Before using customer-provided keys to secure object data, review the considerations in “Use server-side encryption.”


Multipart upload consists of separate operations for initiating the upload, listing uploads, uploading parts, assembling the uploaded parts, and completing the upload. Objects are created (and versioned if applicable) when the Complete Multipart Upload operation is performed.