Stop Overpaying for S3: These Storage Tricks Can Cut Your AWS Bill Fast

Stop Overpaying for S3: These Storage Tricks Can Cut Your AWS Bill Fast

August 27, 2025
19 views
Get tips and best practices from Develeap’s experts in your inbox

Let’s be honest – cloud storage isn’t cheap.
But with the right knowledge and smart optimization strategies, we can significantly reduce those monthly expenses.

While studying for the AWS SAA exam, I came across a few brilliant concepts that caught my attention.
They genuinely made me happy – so I figured, why keep the joy to myself?
After all, happiness is only real when shared!

Storage classes

Being efficient with AWS S3 storage classes can save time, money, and headaches.
There are various storage classes, each suited for specific use cases – the secret is knowing when to use which.

Some are faster, some are cheaper, and some are simply the right tool for the job.
Before diving into examples, let’s review all AWS S3 storage classes:

  • S3 Standard: Great for frequently accessed data like websites, content distribution, and data analytics.
  • S3 Intelligent-Tiering: Automatically moves data between access tiers based on how frequently it’s accessed, ideal for unpredictable usage patterns.
  • S3 Standard-IA (Infrequent Access): Lower cost for less frequently accessed data with at least 30-day storage. Useful for backups or disaster recovery files.
  • S3 One Zone-IA: Cost-effective, stores data in one availability zone, suitable for non-critical backups and reproducible data. Offers less resilience against zone failures.
  • S3 Glacier Instant Retrieval: Archive storage with immediate retrieval, ideal for data like medical images or news media.
  • S3 Glacier Flexible Retrieval: Good for archives accessed infrequently, with options for expedited, standard, or bulk retrieval.
  • S3 Glacier Deep Archive: Cheapest option, long retrieval times (12-48 hours), best for long-term digital preservation.
  • S3 Express One Zone: Ultra-high performance storage for a single Availability Zone, offering consistent single-digit millisecond access, perfect for latency-sensitive applications within a single AZ.

Quick comparison of AWS S3 storage classes

Here’s the juicy part- a direct comparison (including a rough cost indication):

Storage Class Availability Durability Min Storage Duration Retrieval Fee Retrieval Time Common Use Case Relative Cost

(us-east-1)

Standard 99.99% 99.999999999% None None Immediate Frequently accessed data $$$$
Intelligent-

Tiering

99.9% 99.999999999% None No retrieval fees, but auto-tiering applies only to objects ≥ 128 KB* Immediate Unpredictable access patterns $$$
Standard-

IA

99.9% 99.999999999% 30 days Yes Immediate Infrequently accessed data $$$
One Zone-IA 99.5% 99.999999999%** 30 days Yes Immediate Non-critical, infrequent access $
Glacier Instant High durability, immediate retrieval 99.999999999% 90 days Yes Milliseconds Archive with immediate access $$
Glacier Flexible High durability, varied retrieval 99.999999999% 90 days Yes Expedited- 1-5 min

Standard- 3-5 h

Bulk- 5-12 h

Less frequent archive access $
Deep Archive High durability, slow retrieval 99.999999999% 180 days Yes Standard ≈ 12 h

Bulk ≈ 48 h

Long-term retention $
Express One Zone 99.95% 99.999999999%** 1 Hour None Milliseconds Latency-sensitive, single-zone use cases $$$$

*Intelligent-Tiering charges a monthly monitoring fee per object.

**Data stored in a single availability zone means lower resilience.

 

 



Availability (SLA): For reference, 99.99% means the storage will be unavailable for about 52 minutes per year.

Durability: Refers to the probability of not losing data. AWS’s 99.999999999% durability implies an extremely low risk of data loss.

Min Storage Duration: Minimum amount of time objects must remain stored without extra charges.

Retrieval Fee: Charges for accessing data from certain storage classes.
Not applicable to Intelligent-Tiering, which uses a monitoring fee instead.

Understanding S3 storage costs

AWS S3 uses a pay-as-you-go pricing model, meaning you only pay for what you use, with no upfront commitments or minimum charges. However, the actual cost you incur can vary significantly based on several factors, including:

Region: Costs differ depending on the AWS region where your data is stored.

Storage Volume: The more data you store, the lower your per-GB rate may be due to tiered pricing.

Request and Retrieval Costs: Charges for PUT, GET, COPY, and other requests, as well as fees for retrieving data from certain classes.

Data Transfer: Outbound data transfer (to the internet or other regions) incurs additional charges.

Additional Features: Using features like replication, analytics, or S3 Object Lambda can add to your overall cost.

Minimum Storage Duration: Some classes require you to pay for a minimum storage period, even if you delete data sooner.

 

Because of these variables, S3 costs can change over time and with your usage patterns.

For the most accurate and current information, always refer to the official Amazon S3 Pricing documentation.

AWS pricing calculator

In addition to that, AWS provides its Pricing Calculator, where you can calculate your expected S3 costs by entering the usage factors. This tool helps you model your specific use case and estimate monthly costs across different storage classes, making it easier to choose the most cost-effective option for your workload.

Practical example: Implementing S3 lifecycle configuration via AWS console

Lifecycle configuration is a powerful feature in AWS S3 that automatically manages your data storage lifecycle. With these configurations, you can optimize your storage costs by automatically moving data between different storage classes based on how often data is accessed or how old it is. This helps ensure you’re always paying the lowest possible cost for your data storage, without manual intervention.

Let’s walk through how you can practically implement Lifecycle Configuration on AWS S3.

Lifecycle Configuration Step-by-Step Guide

In this guide, we will create a Lifecycle Configuration that automatically transitions objects through different storage classes to optimize costs.

Specifically, we’ll set up a rule that:
– Moves objects to Standard-IA after 30 days (reducing storage costs for less frequently accessed data)
– Transitions to Glacier after 90 days (for long-term archival at lower costs)
– Finally moves to Deep Archive after 365 days (for the most cost-effective long-term storage)

1. Select your bucket (or create one):

  • Navigate to the AWS S3 Management Console.
  • Click on your existing bucket or create a new bucket.

2. Navigate to the Management Tab:

  • Within your selected bucket, click on the “Management” tab.

 

  • Click “Create lifecycle rule” to initiate the lifecycle configuration

 

3. Define Lifecycle Rule:

  • Enter a descriptive name for your rule (e.g., “LogFilesLifecycle”).
  • Specify a prefix if needed (e.g., “logs/”).

4. Configure transitions:

  • Add transitions according to your desired lifecycle:
    • Transition to Standard-IA after 30 days.

 

6. Review and create the Lifecycle Rule:

  • Review the summary of your transitions and expiration actions.
  • Click “Create rule” to finalize your lifecycle configuration.

 

And since we like to automate things over here (because let’s face it, doing everything manually is sooo 2000s!), here’s the CLI way of doing so!

aws s3api put-bucket-lifecycle-configuration \
  --bucket your-bucket-name \
  --lifecycle-configuration file://lifecycle.json


Ensure your JSON (lifecycle.json) file matches your lifecycle configuration:

{
  "Rules": [
    {
      "ID": "LogsLifecycleRule",
      "Filter": { "Prefix": "logs/" },
      "Status": "Enabled",
      "Transitions": [
        { "Days": 30, "StorageClass": "STANDARD_IA" },
        { "Days": 90, "StorageClass": "GLACIER" },
        { "Days": 365, "StorageClass": "DEEP_ARCHIVE" }
      ],
      "Expiration": { "Days": 1825 }
    }
  ]
}

Happy storing! 💾

We’re Hiring!
Develeap is looking for talented DevOps engineers who want to make a difference in the world.
Skip to content