S3 · Multipart uploads
UploadPart
/{bucket}/{key}?partNumber&uploadIdUploads one part of a multipart upload.
Send the parts in any order, or at the same time. A part with a part number that exists replaces it. Keep the ETag of each part for CompleteMultipartUpload.
- Role
- Editor or higher
- Support
- Supported
- Returns the part ETag. Every part except the last must be the same size.
Path parameters
Query parameters
The part number, from 1 through 10,000.
The upload ID from CreateMultipartUpload.
Headers
The size of the body in bytes. One request can carry at most 200 MiB.
The base64 MD5 digest of the body. A different digest returns 400 BadDigest.
A base64 checksum of the part: crc32, crc32c, crc64nvme, sha1, or sha256. Storage checks it. A different checksum returns 400 BadDigest.
The checksum to compute: CRC32, CRC32C, CRC64NVME, SHA1, or SHA256. x-amz-checksum-algorithm does the same.
The workspace ID that must own the bucket. Another owner returns 403 AccessDenied.
Request body
The bytes of the part.
Responses
200OK
Storage stored the part.
Response headers
ETagstringThe entity tag of the part. Send it to CompleteMultipartUpload.
This response has no body.
Errors
Select an error in the response example to see its XML body. Any request can also get the common errors, such as SignatureDoesNotMatch.
- 404NoSuchUpload
The upload ID is not known for this key. The upload was completed or aborted.
What to do: Start a new upload with CreateMultipartUpload.
- 400InvalidArgument
The partNumber is not an integer from 1 through 10,000.
What to do: Number the parts from 1 through 10,000.
- 400BadDigest
A checksum header does not match the body. Storage did not keep the bytes.
What to do: Compute the checksum from the bytes that you send, then send the request again.
- 400XAmzContentSHA256Mismatch
The body does not match the SHA-256 that the request signed.
What to do: Hash the bytes that you send, then sign and send the request again.
- 400IncompleteBody
The body ended before the length that the request declared.
What to do: Send the whole body again.
- 411MissingContentLength
An
aws-chunkedbody came withoutx-amz-decoded-content-length.What to do: Send the object size in
x-amz-decoded-content-length.- 413EntityTooLarge
The body is larger than 200 MiB.
What to do: Use a multipart upload. The aws CLI and the SDKs do this for a large file by themselves.
- 503SlowDown
The bucket has too many writes in progress. The response has
Retry-After: 1.What to do: Wait for the Retry-After time, then send the request again. SDKs retry by themselves.
- 404NoSuchBucket
No bucket has this name, or the bucket was deleted.
What to do: Check the bucket name. ListBuckets shows the buckets of the workspace.
- 403AccessDenied
The key does not have the role for this operation, or the bucket is in another workspace.
What to do: Use a key of the workspace that owns the bucket, with the role above.