import { Command as $Command } from "@smithy/smithy-client"; import { MetadataBearer as __MetadataBearer } from "@smithy/types"; import { CompleteMultipartUploadOutput, CompleteMultipartUploadRequest } from "../models/models_0"; import { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; /** * @public */ export type { __MetadataBearer }; export { $Command }; /** * @public * * The input for {@link CompleteMultipartUploadCommand}. */ export interface CompleteMultipartUploadCommandInput extends CompleteMultipartUploadRequest { } /** * @public * * The output of {@link CompleteMultipartUploadCommand}. */ export interface CompleteMultipartUploadCommandOutput extends CompleteMultipartUploadOutput, __MetadataBearer { } declare const CompleteMultipartUploadCommand_base: { new (input: CompleteMultipartUploadCommandInput): import("@smithy/smithy-client").CommandImpl; new (__0_0: CompleteMultipartUploadCommandInput): import("@smithy/smithy-client").CommandImpl; getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; }; /** *

Completes a multipart upload by assembling previously uploaded parts.

*

You first initiate the multipart upload and then upload all parts using the UploadPart * operation or the UploadPartCopy * operation. After successfully uploading all relevant parts of an upload, you call this * CompleteMultipartUpload operation to complete the upload. Upon receiving this request, Amazon S3 concatenates all the parts * in ascending order by part number to create a new object. In the CompleteMultipartUpload * request, you must provide the parts list and ensure that the parts list is complete. * The CompleteMultipartUpload API operation concatenates the parts that you provide in the list. For each part in the list, * you must provide the PartNumber value and the ETag value that are returned after that part * was uploaded.

*

The processing of a CompleteMultipartUpload request could take several minutes to * finalize. After Amazon S3 begins processing the request, it sends an HTTP response header that * specifies a 200 OK response. While processing is in progress, Amazon S3 periodically sends white * space characters to keep the connection from timing out. A request could fail after the * initial 200 OK response has been sent. This means that a 200 OK response can * contain either a success or an error. The error response might be embedded in the 200 OK response. * If you call this API operation directly, make sure to design * your application to parse the contents of the response and handle it appropriately. If you * use Amazon Web Services SDKs, SDKs handle this condition. The SDKs detect the embedded error and apply * error handling per your configuration settings (including automatically retrying the * request as appropriate). If the condition persists, the SDKs throw an exception (or, for * the SDKs that don't use exceptions, they return an error).

*

Note that if CompleteMultipartUpload fails, applications should be prepared * to retry any failed requests (including 500 error responses). For more information, see Amazon S3 Error Best * Practices.

* *

You can't use Content-Type: application/x-www-form-urlencoded for the * CompleteMultipartUpload requests. Also, if you don't provide a * Content-Type header, CompleteMultipartUpload can still return a 200 * OK response.

*
*

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

* *

* Directory buckets - For directory buckets, you must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://bucket_name.s3express-az_id.region.amazonaws.com/key-name * . Path-style requests are not supported. For more information, see Regional and Zonal endpoints in the * Amazon S3 User Guide.

*
*
*
Permissions
*
*
    *
  • *

    * General purpose bucket permissions - For information about permissions required to use the multipart upload API, see Multipart Upload * and Permissions in the Amazon S3 * User Guide.

    *
  • *
  • *

    * Directory bucket permissions - To grant access to this API operation on a directory bucket, we recommend that you use the * CreateSession * API operation for session-based authorization. Specifically, you grant the s3express:CreateSession permission to the directory bucket in a bucket policy or an IAM identity-based policy. Then, you make the CreateSession API call on the bucket to obtain a session token. With the session token in your request header, you can make API requests to this operation. After the session token expires, you make another CreateSession API call to generate a new session token for use. * Amazon Web Services CLI or SDKs create session and refresh the session token automatically to avoid service interruptions when a session expires. For more information about authorization, see * CreateSession * .

    *
  • *
*
*
Special errors
*
*
    *
  • *

    Error Code: EntityTooSmall *

    *
      *
    • *

      Description: Your proposed upload is smaller than the minimum allowed object * size. Each part must be at least 5 MB in size, except the last part.

      *
    • *
    • *

      HTTP Status Code: 400 Bad Request

      *
    • *
    *
  • *
  • *

    Error Code: InvalidPart *

    *
      *
    • *

      Description: One or more of the specified parts could not be found. The part * might not have been uploaded, or the specified ETag might not have * matched the uploaded part's ETag.

      *
    • *
    • *

      HTTP Status Code: 400 Bad Request

      *
    • *
    *
  • *
  • *

    Error Code: InvalidPartOrder *

    *
      *
    • *

      Description: The list of parts was not in ascending order. The parts list * must be specified in order by part number.

      *
    • *
    • *

      HTTP Status Code: 400 Bad Request

      *
    • *
    *
  • *
  • *

    Error Code: NoSuchUpload *

    *
      *
    • *

      Description: 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

      *
    • *
    *
  • *
*
*
HTTP Host header syntax
*
*

* Directory buckets - The HTTP Host header syntax is * Bucket_name.s3express-az_id.region.amazonaws.com.

*
*
*

The following operations are related to CompleteMultipartUpload:

* * @example * Use a bare-bones client and the command you need to make an API call. * ```javascript * import { S3Client, CompleteMultipartUploadCommand } from "@aws-sdk/client-s3"; // ES Modules import * // const { S3Client, CompleteMultipartUploadCommand } = require("@aws-sdk/client-s3"); // CommonJS import * const client = new S3Client(config); * const input = { // CompleteMultipartUploadRequest * Bucket: "STRING_VALUE", // required * Key: "STRING_VALUE", // required * MultipartUpload: { // CompletedMultipartUpload * Parts: [ // CompletedPartList * { // CompletedPart * ETag: "STRING_VALUE", * ChecksumCRC32: "STRING_VALUE", * ChecksumCRC32C: "STRING_VALUE", * ChecksumSHA1: "STRING_VALUE", * ChecksumSHA256: "STRING_VALUE", * PartNumber: Number("int"), * }, * ], * }, * UploadId: "STRING_VALUE", // required * ChecksumCRC32: "STRING_VALUE", * ChecksumCRC32C: "STRING_VALUE", * ChecksumSHA1: "STRING_VALUE", * ChecksumSHA256: "STRING_VALUE", * RequestPayer: "requester", * ExpectedBucketOwner: "STRING_VALUE", * SSECustomerAlgorithm: "STRING_VALUE", * SSECustomerKey: "STRING_VALUE", * SSECustomerKeyMD5: "STRING_VALUE", * }; * const command = new CompleteMultipartUploadCommand(input); * const response = await client.send(command); * // { // CompleteMultipartUploadOutput * // Location: "STRING_VALUE", * // Bucket: "STRING_VALUE", * // Key: "STRING_VALUE", * // Expiration: "STRING_VALUE", * // ETag: "STRING_VALUE", * // ChecksumCRC32: "STRING_VALUE", * // ChecksumCRC32C: "STRING_VALUE", * // ChecksumSHA1: "STRING_VALUE", * // ChecksumSHA256: "STRING_VALUE", * // ServerSideEncryption: "AES256" || "aws:kms" || "aws:kms:dsse", * // VersionId: "STRING_VALUE", * // SSEKMSKeyId: "STRING_VALUE", * // BucketKeyEnabled: true || false, * // RequestCharged: "requester", * // }; * * ``` * * @param CompleteMultipartUploadCommandInput - {@link CompleteMultipartUploadCommandInput} * @returns {@link CompleteMultipartUploadCommandOutput} * @see {@link CompleteMultipartUploadCommandInput} for command's `input` shape. * @see {@link CompleteMultipartUploadCommandOutput} for command's `response` shape. * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. * * @throws {@link S3ServiceException} *

Base exception class for all service exceptions from S3 service.

* * @public * @example To complete multipart upload * ```javascript * // The following example completes a multipart upload. * const input = { * "Bucket": "examplebucket", * "Key": "bigobject", * "MultipartUpload": { * "Parts": [ * { * "ETag": "\"d8c2eafd90c266e19ab9dcacc479f8af\"", * "PartNumber": "1" * }, * { * "ETag": "\"d8c2eafd90c266e19ab9dcacc479f8af\"", * "PartNumber": "2" * } * ] * }, * "UploadId": "7YPBOJuoFiQ9cz4P3Pe6FIZwO4f7wN93uHsNBEw97pl5eNwzExg0LAT2dUN91cOmrEQHDsP3WA60CEg--" * }; * const command = new CompleteMultipartUploadCommand(input); * const response = await client.send(command); * /* response == * { * "Bucket": "acexamplebucket", * "ETag": "\"4d9031c7644d8081c2829f4ea23c55f7-2\"", * "Key": "bigobject", * "Location": "https://examplebucket.s3..amazonaws.com/bigobject" * } * *\/ * // example id: to-complete-multipart-upload-1481851590483 * ``` * */ export declare class CompleteMultipartUploadCommand extends CompleteMultipartUploadCommand_base { }