Cost S3 upload requests including the extra PUTs that multipart uploads generate for every part of every object.
A multipart upload is not one request: every part is a separate PUT, and the create and complete calls are billed as well, so a 40 MB object at a 16 MB part size costs five requests rather than one. Choosing a larger part size cuts request count but raises the amount re-sent when a part fails. The per-1,000 rate above is a user-supplied list price to confirm on the AWS S3 pricing page for your region. Ingest pipelines that write millions of small objects or use an aggressively small part size can spend more on requests than on storage, and the fix is a part-size or batching change rather than a storage-class change.
S3 PUT Request Cost
requests per object = ceil(size ÷ part size) + 2 when multipart is used, otherwise 1; cost = requests ÷ 1000 x price per 1,000.
requests per object = ceil(size ÷ part size) + 2 when multipart is used, otherwise 1; cost = requests ÷ 1000 x price per 1,000. A multipart upload is not one request: every part is a separate PUT, and the create and complete calls are billed as well, so a 40 MB object at a 16 MB part size costs five requests rather than one. Choosing a larger part size cuts request count but raises the amount re-sent when a part fails. The per-1,000 rate above is a user-supplied list price to confirm on the AWS S3 pricing page for your region.
Ingest pipelines that write millions of small objects or use an aggressively small part size can spend more on requests than on storage, and the fix is a part-size or batching change rather than a storage-class change.
This calculator takes 5 inputs: Objects uploaded per month, Average object size, Multipart part size, Size at which the client switches to multipart, PUT, COPY, POST and LIST price. The pre-filled defaults are a realistic starting point — replace them with figures from your own environment for a result you can act on.
Yes. Parts already uploaded were billed as requests and continue to be billed as storage until the upload is aborted, which is why an AbortIncompleteMultipartUpload lifecycle rule belongs on every bucket.