Graphon API

S3 · Multipart uploads

UploadPart

PUT/{bucket}/{key}?partNumber&uploadId

Uploads 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.

View as Markdown
Role
Editor or higher
Support
Supported
  • Returns the part ETag. Every part except the last must be the same size.

Path parameters

bucketstringrequired

The bucket name.

keystringrequired

The object key. Keep each / as it is. Percent-encode the other reserved characters.

Query parameters

partNumberintegerrequired

The part number, from 1 through 10,000.

uploadIdstringrequired

The upload ID from CreateMultipartUpload.

Headers

Content-Lengthintegerrequired

The size of the body in bytes. One request can carry at most 200 MiB.

Content-MD5stringoptional

The base64 MD5 digest of the body. A different digest returns 400 BadDigest.

x-amz-checksum-*stringoptional

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

Bodybinaryrequired

The bytes of the part.

Responses

200OK

Storage stored the part.

Response headers

ETagstring

The 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-chunked body came without x-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.

Was this page helpful?