import { EndpointParameterInstructions } from "@aws-sdk/middleware-endpoint"; import { Command as $Command } from "@aws-sdk/smithy-client"; import { Handler, HttpHandlerOptions as __HttpHandlerOptions, MetadataBearer as __MetadataBearer, MiddlewareStack } from "@aws-sdk/types"; import { UploadPartCopyOutput, UploadPartCopyRequest } from "../models/models_1"; import { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; /** * @public * * The input for {@link UploadPartCopyCommand}. */ export interface UploadPartCopyCommandInput extends UploadPartCopyRequest { } /** * @public * * The output of {@link UploadPartCopyCommand}. */ export interface UploadPartCopyCommandOutput extends UploadPartCopyOutput, __MetadataBearer { } /** * @public *
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.
For information about maximum and minimum part sizes and other multipart upload specifications, see Multipart upload limits 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. a 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 *
** UploadPart *
** ListParts *
*