Options
All
  • Public
  • Public/Protected
  • All
Menu

Class UploadPartCopyCommand

Uploads a part by copying data from an existing object as data source. You specify the data source by adding the request header x-amz-copy-source in your request and a byte range by adding the request header x-amz-copy-source-range in your request.

The minimum allowable part size for a multipart upload is 5 MB. For more information about multipart upload limits, go to Quick Facts in the Amazon S3 User Guide.

Instead of using an existing object as part data, you might use the UploadPart action and provide data in your request.

You must initiate a multipart upload before you can upload any part. In response to your initiate request. Amazon S3 returns a unique identifier, the upload ID, that you must include in your upload part request.

For more information about using the UploadPartCopy operation, see the following:

  • For conceptual information about multipart uploads, see Uploading Objects Using Multipart Upload in the Amazon S3 User Guide.

  • For information about permissions required to use the multipart upload API, see Multipart Upload and Permissions in the Amazon S3 User Guide.

  • For information about copying objects using a single atomic action vs. the multipart upload, see Operations on Objects in the Amazon S3 User Guide.

  • For information about using server-side encryption with customer-provided encryption keys with the UploadPartCopy operation, see CopyObject and UploadPart.

Note the following additional considerations about the request headers x-amz-copy-source-if-match, x-amz-copy-source-if-none-match, x-amz-copy-source-if-unmodified-since, and x-amz-copy-source-if-modified-since:

  • Consideration 1 - If both of the x-amz-copy-source-if-match and x-amz-copy-source-if-unmodified-since headers are present in the request as follows:

    x-amz-copy-source-if-match condition evaluates to true, and;

    x-amz-copy-source-if-unmodified-since condition evaluates to false;

    Amazon S3 returns 200 OK and copies the data.

  • Consideration 2 - If both of the x-amz-copy-source-if-none-match and x-amz-copy-source-if-modified-since headers are present in the request as follows:

    x-amz-copy-source-if-none-match condition evaluates to false, and;

    x-amz-copy-source-if-modified-since condition evaluates to true;

    Amazon S3 returns 412 Precondition Failed response code.

Versioning

If your bucket has versioning enabled, you could have multiple versions of the same object. By default, x-amz-copy-source identifies the current version of the object to copy. If the current version is a delete marker and you don't specify a versionId in the x-amz-copy-source, Amazon S3 returns a 404 error, because the object does not exist. If you specify versionId in the x-amz-copy-source and the versionId is a delete marker, Amazon S3 returns an HTTP 400 error, because you are not allowed to specify a delete marker as a version for the x-amz-copy-source.

You can optionally specify a specific version of the source object to copy by adding the versionId subresource as shown in the following example:

x-amz-copy-source: /bucket/object?versionId=version id

Special Errors

    • Code: NoSuchUpload

    • Cause: The specified multipart upload does not exist. The upload ID might be invalid, or the multipart upload might have been aborted or completed.

    • HTTP Status Code: 404 Not Found

    • Code: InvalidRequest

    • Cause: The specified copy source is not supported as a byte-range copy source.

    • HTTP Status Code: 400 Bad Request

Related Resources

example

Use a bare-bones client and the command you need to make an API call.

import { S3Client, UploadPartCopyCommand } from "@aws-sdk/client-s3"; // ES Modules import
// const { S3Client, UploadPartCopyCommand } = require("@aws-sdk/client-s3"); // CommonJS import
const client = new S3Client(config);
const command = new UploadPartCopyCommand(input);
const response = await client.send(command);
see

UploadPartCopyCommandInput for command's input shape.

see

UploadPartCopyCommandOutput for command's response shape.

see

config for S3Client's config shape.

Hierarchy

Implements

Index

Constructors

Properties

Constructors

constructor

Properties

Readonly input

input: UploadPartCopyCommandInput

Readonly middlewareStack

middlewareStack: IMiddlewareStack<UploadPartCopyCommandInput, UploadPartCopyCommandOutput>