Skip to main content
Amazon S3 cost is not one storage rate multiplied by gigabytes. A useful estimate separates stored bytes, requests, retrievals, lifecycle actions, replication, and network transfer, then applies current prices for the bucket’s Region and classes. Updated October 9, 2026. S3 cost is a sum of independent usage meters, not a single price per gigabyte.

Use a six-part cost model

Treat a bucket as object cohorts with similar size, age, access rate, storage class, and replication policy.
A compact model is:
Keep quantities and rates separate. Quantities come from Storage Lens, S3 Inventory, CloudWatch, access logs, Cost and Usage Reports, or application telemetry. Rates come from current AWS pricing for the exact Region.

Storage is byte-hours with constraints

Multiply average billable bytes by the rate for each class. Average bytes matter because objects arrive, transition, and expire throughout the month. Billable bytes can differ from logical size. Some classes impose minimum billable object sizes, metadata overhead, or minimum storage durations. Deleting, overwriting, or transitioning early can produce a prorated charge. A million tiny objects can occupy little logical data while creating minimum-size, metadata, monitoring, and request costs. Model object count and size distribution, not only total bytes.

Requests and retrieval are different meters

S3 groups API operations into pricing categories. Writes, copies, lists, reads, lifecycle transitions, restores, and management features can be metered differently. Small-object workloads can spend more on requests than storage. One upload can include multipart initiation, several part uploads, completion, metadata reads, retries, and eventual deletes. Retrieval is separate. Infrequent-access and archive classes have class-specific retrieval charges or mechanics. Flexible Retrieval and Deep Archive require restoration before ordinary access, and temporary restored copies can incur storage.

Lifecycle rules are economic decisions

A lifecycle transition is a paid request per object. The destination can impose a minimum size, duration, or retrieval charge.
Versioned buckets need separate treatment for current versions, noncurrent versions, and delete markers. Expiring only current objects can leave old versions billable. A colder class saves money only when its complete lifetime cost is lower.

Replication multiplies more than bytes

Replication creates destination storage and replication PUT requests. Cross-Region Replication can add inter-Region transfer. Replication Time Control adds metered features. KMS calls and Batch Replication can add further costs.

Follow the bytes

Draw each path:
AWS documents exceptions such as no S3 data-transfer charge for internet ingress, S3-to-EC2 transfer in the same Region, and S3-to-CloudFront transfer. The complete path can still include CloudFront delivery, inter-Region, acceleration, or NAT charges. Data-transfer cost depends on source, destination, direction, path, and Region.

Build an estimate you can defend

Model baseline, expected, and peak scenarios. Vary object growth, size, requests, cache hit rate, retrieval percentage, retention, and replication volume. Reconcile estimates against Cost and Usage Reports by usage type and operation. Avoid false precision. Record each price source and retrieval date, and rerun the model after architecture changes.

Frequently asked questions

No. A lower storage rate can be offset by minimum object size, minimum storage duration, transition requests, retrieval charges, and monitoring fees. Compare complete cohort cost over its expected lifetime, including reads and early deletion.
Define object cohorts and model baseline, expected, and peak quantities. Estimate average bytes, object count, operation counts, retrieval percentage, retention, replicas, and network paths. Apply current regional rates, then replace assumptions with telemetry after launch.
Storage capacity may not be the dominant meter. Request volume, tiny objects, lifecycle transitions, archive restores, replication, transfer, inventory, analytics, or KMS calls can exceed storage charges. Break the bill down by usage type before changing classes.

Sources and further reading

Last modified on October 8, 2026