Use CompleteMultipartUpload
with an AWS SDK or CLI
The following code examples show how to use CompleteMultipartUpload
.
Action examples are code excerpts from larger programs and must be run in context. You can see this action in
context in the following code examples:
- C++
-
- SDK for C++
-
//! Complete a multipart upload to an S3 bucket.
/*!
\param bucket: The name of the S3 bucket where the object will be uploaded.
\param key: The unique identifier (key) for the object within the S3 bucket.
\param uploadID: An upload ID string.
\param parts: A vector of CompleteParts.
\param client: The S3 client instance used to perform the upload operation.
\return CompleteMultipartUploadOutcome: The request outcome.
*/
Aws::S3::Model::CompleteMultipartUploadOutcome AwsDoc::S3::completeMultipartUpload(const Aws::String &bucket,
const Aws::String &key,
const Aws::String &uploadID,
const Aws::Vector<Aws::S3::Model::CompletedPart> &parts,
const Aws::S3::S3Client &client) {
Aws::S3::Model::CompletedMultipartUpload completedMultipartUpload;
completedMultipartUpload.SetParts(parts);
Aws::S3::Model::CompleteMultipartUploadRequest request;
request.SetBucket(bucket);
request.SetKey(key);
request.SetUploadId(uploadID);
request.SetMultipartUpload(completedMultipartUpload);
Aws::S3::Model::CompleteMultipartUploadOutcome outcome =
client.CompleteMultipartUpload(request);
if (!outcome.IsSuccess()) {
std::cerr << "Error completing multipart upload: " << outcome.GetError().GetMessage() << std::endl;
}
return outcome;
}
- CLI
-
- AWS CLI
-
The following command completes a multipart upload for the key multipart/01
in the bucket my-bucket
:
aws s3api complete-multipart-upload --multipart-upload file://mpustruct
--bucket my-bucket
--key 'multipart/01
' --upload-id dfRtDYU0WWCCcH43C3WFbkRONycyCpTJJvxu2i5GYkZljF.Yxwh6XG7WfS2vC4to6HiV6Yjlx.cph0gtNBtJ8P3URCSbB7rjxI5iEwVDmgaXZOGgkk5nVTW16HOQ5l0R
The upload ID required by this command is output by create-multipart-upload
and can also be retrieved with list-multipart-uploads
.
The multipart upload option in the above command takes a JSON structure that describes the parts of the multipart upload that should be reassembled into the complete file. In this example, the file://
prefix is used to load the JSON structure from a file in the local folder named mpustruct
.
mpustruct:
{
"Parts": [
{
"ETag": "e868e0f4719e394144ef36531ee6824c",
"PartNumber": 1
},
{
"ETag": "6bb2b12753d66fe86da4998aa33fffb0",
"PartNumber": 2
},
{
"ETag": "d0a0112e841abec9c9ec83406f0159c8",
"PartNumber": 3
}
]
}
The ETag value for each part is upload is output each time you upload a part using the upload-part
command and can also be retrieved by calling list-parts
or calculated by taking the MD5 checksum of each part.
Output:
{
"ETag": "\"3944a9f7a4faab7f78788ff6210f63f0-3\"",
"Bucket": "my-bucket",
"Location": "https://my-bucket.s3.amazonaws.com/multipart%2F01",
"Key": "multipart/01"
}
- Rust
-
- SDK for Rust
-
let _complete_multipart_upload_res = client
.complete_multipart_upload()
.bucket(&bucket_name)
.key(&key)
.multipart_upload(completed_multipart_upload)
.upload_id(upload_id)
.send()
.await
.unwrap();
For a complete list of AWS SDK developer guides and code examples, see
Using this service with an AWS SDK.
This topic also includes information about getting started and details about previous SDK versions.