Back to HomeAWS

AWS S3 Complete Tutorial: Storage Classes, Pricing, Implementation Guide [2025]

15 min min read

AWS S3 Complete Tutorial: Storage Classes, Pricing, Implementation Guide [2025]

AWS S3 Complete Tutorial: Storage Classes, Pricing, Implementation Guide [2025]

Storing 1TB of data in S3 costs just $23 per month. The same capacity in physical hard drives, plus server, electricity, and maintenance costs, would be several times more expensive. More importantly, S3's data durability is 99.999999999%—files you store virtually never get lost.

This article will guide you through S3 from the ground up—what it is, what storage classes are available, how pricing works, and step-by-step instructions to create your first Bucket.


What is AWS S3?

S3 (Simple Storage Service) is AWS's object storage service. It was the first service AWS launched in 2006 and remains one of the most widely used today.

Object Storage vs Traditional Storage

Traditional storage (like your computer's hard drive) is "block storage" or "file storage" with directory structures and file paths.

S3 is "object storage" where each file is an "object" accessed via a unique Key (identifier). While Keys can contain slashes (making it look like folders), the underlying structure is actually flat.

AspectTraditional StorageS3 Object Storage
StructureDirectory hierarchyFlat (Key-Value)
Access MethodFile pathsHTTP API / URL
ScalabilityLimited by hardwareVirtually unlimited
DurabilityHardware dependent99.999999999%
Access LatencyMillisecondsTens of milliseconds

Core S3 Concepts

Bucket

A Bucket is an S3 container—all objects are stored inside Buckets. Each Bucket has a globally unique name.

s3://my-company-bucket/images/logo.png
      └── Bucket name ──┘└── Key ──┘

Object

Objects are the basic storage units in S3, containing:

  • Key: Unique identifier for the object (similar to file path)
  • Value: The actual data content
  • Metadata: Descriptive information about the object (type, size, custom attributes)
  • Version ID: Version number (if versioning is enabled)

A single object can be up to 5TB, and a single Bucket can store unlimited objects.

11 Nines of Durability

S3's durability is 99.999999999%—that's "11 nines."

What does this mean? If you store 10 million files, on average it would take 100,000 years to lose one.

S3 achieves this by automatically replicating each object to at least 3 Availability Zones (AZs) within the same region. If any one data center has problems, backups exist elsewhere.


S3 Storage Classes Comparison

S3 has multiple storage classes with different prices and access speeds. Choosing the right class can significantly reduce costs.

Storage Classes Overview

ClassAccess FrequencyMinimum StorageRetrieval TimeMonthly Cost/GB
S3 StandardFrequentNoneInstant$0.023
S3 Intelligent-TieringVariableNoneInstant$0.0025-0.023
S3 Standard-IAInfrequent30 daysInstant$0.0125
S3 One Zone-IAInfrequent30 daysInstant$0.01
S3 Glacier InstantRare90 daysInstant$0.004
S3 Glacier FlexibleArchive90 daysMinutes-Hours$0.0036
S3 Glacier Deep ArchiveLong-term Archive180 days12-48 hours$0.00099

*Prices based on US East region

S3 Standard

The most common class, suitable for frequently accessed data.

Features:

  • Instant access
  • High availability (99.99%)
  • No minimum storage duration
  • No retrieval fees

Use Cases:

  • Website static assets (images, CSS, JS)
  • Frequently accessed application data
  • Hot data in data lakes

S3 Intelligent-Tiering

Best choice when access patterns are unknown. S3 automatically analyzes access patterns and moves data to the most suitable tier.

How It Works:

  • Frequent Access: Regularly accessed data
  • Infrequent Access: Auto-moves after 30 days without access
  • Archive Instant Access: Auto-moves after 90 days without access
  • Archive Access: Auto-moves after 180 days without access (optional)
  • Deep Archive Access: 180+ days without access (optional)

Features:

  • Small monthly monitoring fee ($0.0025/1,000 objects)
  • No retrieval fees
  • Automatic cost optimization

Use Cases:

  • Data with unpredictable access patterns
  • Don't want to manage storage classes manually
  • Data lakes

S3 Standard-IA (Infrequent Access)

45% cheaper than Standard but has retrieval fees. Suitable for infrequently accessed data that needs instant retrieval.

Features:

  • Instant access
  • Minimum 30-day storage
  • Minimum 128KB charge
  • Retrieval fee $0.01/GB

Use Cases:

  • Backup data
  • Disaster recovery copies
  • Long-term retention data accessed occasionally

S3 One Zone-IA

Cheaper than Standard-IA (20% less), but data is stored in only one Availability Zone.

Features:

  • Stored in only one AZ (if that AZ fails, data may be lost)
  • Durability still 99.999999999%
  • Lower availability (99.5%)

Use Cases:

  • Data that can be regenerated
  • Backups of backups
  • Test environment data

⚠️ Note: Not recommended for critical data

S3 Glacier Instant Retrieval

Long-term storage for data that occasionally needs instant access.

Features:

  • Instant access (milliseconds)
  • Minimum 90-day storage
  • Storage costs 68% less than Standard-IA
  • Higher retrieval fees ($0.03/GB)

Use Cases:

  • Medical imaging
  • News media assets
  • User-generated content archives

S3 Glacier Flexible Retrieval

Traditional archive storage with lower prices but retrieval takes time.

Retrieval Options:

OptionTimeCost
Expedited1-5 minutes$0.03/GB
Standard3-5 hours$0.01/GB
Bulk5-12 hours$0.0025/GB

Use Cases:

  • Compliance archives (accessed 1-2 times per year)
  • Digital media preservation
  • Long-term backups

S3 Glacier Deep Archive

The cheapest storage class for data rarely accessed.

Features:

  • Storage costs only $0.00099/GB (95% cheaper than Standard)
  • Minimum 180-day storage
  • Retrieval time 12-48 hours

Use Cases:

  • Data required to be retained 7-10 years by regulations
  • Financial transaction records
  • Medical records archives

Storage Class Selection Guide

How often is your data accessed?
│
├─ Daily/Weekly → S3 Standard
│
├─ Uncertain → S3 Intelligent-Tiering
│
├─ 1-2 times monthly
│   ├─ Needs instant access → S3 Standard-IA
│   └─ Can be regenerated → S3 One Zone-IA
│
├─ 1-2 times quarterly
│   └─ Needs instant access → S3 Glacier Instant Retrieval
│
├─ 1-2 times yearly
│   └─ Can wait hours → S3 Glacier Flexible Retrieval
│
└─ Almost never (compliance retention)
    └─ S3 Glacier Deep Archive

Are you using the right storage class? You could save half your costs

Many enterprises put all data in S3 Standard, when 80% of data is accessed less than a few times per year. Properly using Lifecycle Policies for automatic tiering can save 40-60% on storage costs on average.

Schedule a free bill review and let us analyze your S3 cost optimization opportunities.


S3 Pricing Explained

S3 costs aren't just storage fees—they also include request and transfer fees. Understanding the complete pricing structure is essential for accurate cost estimation.

Cost Components

Total S3 Cost = Storage Fees + Request Fees + Data Transfer Fees + (Management Feature Fees)

Storage Fees

Charged based on actual capacity used, with different prices for different storage classes.

Example Calculation (US East region):

Storage ClassCapacityUnit PriceMonthly Cost
Standard100 GB$0.023/GB$2.30
Standard-IA500 GB$0.0125/GB$6.25
Glacier Deep Archive1 TB$0.00099/GB$1.01

Request Fees

Every operation on S3 incurs request fees.

Main Request Types:

Request TypeDescriptionStandard Price
PUT/COPY/POST/LISTWrite, copy, list$0.005/1,000 requests
GET/SELECTRead$0.0004/1,000 requests
DELETEDeleteFree
Lifecycle TransitionAuto-transfer$0.01/1,000 requests

Examples:

  • Upload 10,000 files: $0.05
  • Download 100,000 times: $0.04

Note: Glacier class retrieval request fees are higher.

Data Transfer Fees

Into S3 (Ingress): Free

Uploading data to S3 from anywhere is free.

Out of S3 (Egress):

DestinationPrice
To Internet (first 100 GB/month)Free
To Internet (over 100 GB)$0.09/GB
To EC2 in same regionFree
To different region$0.02/GB
To CloudFrontFree

Cost-Saving Tips:

  • Put EC2 and S3 in the same region
  • Use CloudFront as CDN (transfer to CloudFront is free)

Cost Calculation Example

Scenario: E-commerce Website Image Storage

Configuration:

  • 500 GB product images (Standard, high-frequency access)
  • 2 TB historical order data (Standard-IA)
  • 1 million image reads per month
  • 500 GB monthly transfer to internet
ItemCalculationCost
Standard Storage500 GB × $0.023$11.50
Standard-IA Storage2,000 GB × $0.0125$25.00
GET Requests1,000,000 ÷ 1,000 × $0.0004$0.40
Data Transfer400 GB × $0.09 (minus free 100 GB)$36.00
Total$72.90/month

S3 Bucket Creation Tutorial

Step 1: Log into AWS Console

  1. Go to AWS Console
  2. Search for "S3" and click to enter S3 service

Step 2: Create Bucket

  1. Click "Create bucket"

  2. General configuration

    • Bucket name: Enter a globally unique name
      • Only lowercase letters, numbers, hyphens
      • 3-63 characters
      • Example: my-company-assets-2025
    • AWS Region: Select region (recommend choosing closest to users)
  3. Object Ownership

    • Keep default "ACLs disabled" (recommended)
  4. Block Public Access settings

    • All checked by default (blocks public access)
    • Uncheck as needed if you want public access (e.g., static websites)
  5. Bucket Versioning

    • Disable: Don't keep version history (default)
    • Enable: Keep all versions (prevents accidental deletion, but increases storage costs)
  6. Default encryption

    • Choose encryption method
    • Recommend "Server-side encryption with Amazon S3 managed keys (SSE-S3)"
  7. Click "Create bucket"

Step 3: Upload Objects

  1. Click the Bucket name you just created
  2. Click "Upload"
  3. Drag files in, or click "Add files"
  4. (Optional) Properties
    • Storage class: Choose storage class
    • Server-side encryption: Encryption settings
  5. Click "Upload"

Step 4: Configure Permissions

Scenario 1: Completely Private (Default)

No additional configuration needed—only AWS account owner and authorized IAM users can access.

Scenario 2: Public via CloudFront (Recommended)

  1. Create CloudFront Distribution with S3 as Origin
  2. Configure Origin Access Control (OAC)
  3. S3 Bucket Policy only allows CloudFront access

Scenario 3: Direct Public Bucket (Not Recommended)

  1. Disable Block Public Access
  2. Set Bucket Policy:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::your-bucket-name/*"
        }
    ]
}

⚠️ Warning: Be very careful with public Buckets—ensure no sensitive data.

Step 5: Set Up Lifecycle Policy

Automatically tier old data to cheaper storage classes.

  1. Enter Bucket, click "Management" tab
  2. Click "Create lifecycle rule"
  3. Configure rule:
    • Rule name: e.g., "archive-old-files"
    • Filter: Can limit to specific prefix (like logs/)
  4. Set Lifecycle rule actions:
    • Example: Move to Standard-IA after 30 days
    • Example: Move to Glacier after 90 days
    • Example: Delete after 365 days
  5. Click "Create rule"

Example Configuration:

┌─────────────┐   30 days  ┌──────────────┐   90 days  ┌─────────────┐
│  Standard   │ ─────────> │ Standard-IA  │ ─────────> │   Glacier   │
│  $0.023/GB  │            │  $0.0125/GB  │            │  $0.004/GB  │
└─────────────┘            └──────────────┘            └─────────────┘

Common S3 Use Cases

Static Website Hosting

S3 can directly host static websites (HTML, CSS, JS).

Setup Steps:

  1. Upload website files to Bucket
  2. Enable "Static website hosting" in Properties
  3. Set Index document (e.g., index.html)
  4. Configure public access permissions

With CloudFront:

  • Use CloudFront as CDN
  • Can use custom domain
  • HTTPS support
  • Global acceleration

Best for: Corporate websites, landing pages, documentation sites, SPA frontends

Data Backup

S3 is the most popular cloud backup destination.

Backup Strategy:

  • Use S3 Standard for last 30 days of backups
  • Use Glacier for older backups
  • Enable versioning to prevent accidental deletion
  • Set up Cross-Region Replication (CRR) for added protection

Best for: Database backups, system backups, file archival

Data Lake

S3 is the preferred storage for building data lakes.

Architecture Example:

Data Sources → S3 Landing Zone → AWS Glue (ETL) → S3 Curated Zone → Athena/Redshift

Advantages:

  • Low storage costs
  • Query S3 data directly with Athena
  • Supports various formats (CSV, JSON, Parquet, ORC)
  • Seamless integration with AWS analytics services

Best for: Big data analytics, machine learning data storage

Application Asset Storage

Store application files (images, videos, documents) in S3.

Common Pattern:

  1. User uploads file to backend
  2. Backend stores file to S3
  3. Returns S3 URL to user
  4. User accesses file via CloudFront

Or use Pre-signed URLs:

  1. Backend generates Pre-signed URL
  2. User uploads directly to S3 (bypassing backend)
  3. Reduces backend load

Best for: Social media, e-commerce, content platforms


S3 Security Best Practices

Block Public Access by Default

All new Buckets block public access by default. Don't disable unless you have a specific need.

Enable Versioning

Versioning can:

  • Prevent accidental deletion (deletion just adds a Delete Marker)
  • Keep file version history
  • Pair with MFA Delete for added protection

Note: Versioning increases storage costs—old versions also take space. Set up Lifecycle Policies to automatically delete old versions.

Use Server-Side Encryption

S3 supports multiple encryption methods:

TypeDescriptionUse Case
SSE-S3AWS-managed keysGeneral purpose (recommended)
SSE-KMSAWS KMS-managed keysNeed to audit key usage
SSE-CCustomer-provided keysNeed full key control

Recommendation: Use at least SSE-S3; for sensitive data use SSE-KMS.

Set Bucket Policies

Explicitly define who can do what operations.

Least Privilege Example:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:role/MyAppRole"
            },
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::my-bucket/app-data/*"
        }
    ]
}

Enable Access Logging

Record all Bucket access for security auditing.

  1. Create a dedicated Bucket for logs
  2. Enable Server access logging in target Bucket's Properties
  3. Specify log storage location

Set Up S3 Object Lock

For data requiring WORM (Write Once Read Many) compliance, use Object Lock to prevent deletion and overwriting.


FAQ

What's the difference between S3 and EBS?

  • S3: Object storage, accessed via HTTP API, suitable for files, backups, static assets
  • EBS: Block storage, mounted to EC2 like a hard drive, suitable for operating systems, databases

Can S3 be mounted to EC2?

Not directly. But you can access it via AWS CLI or SDK, or use S3 File Gateway via NFS protocol.

How do I limit S3 costs?

  1. Choose correct storage classes
  2. Set Lifecycle Policies for automatic tiering
  3. Delete unnecessary old versions
  4. Monitor Cost Explorer to find cost sources
  5. Set AWS Budgets alerts

What is a Pre-signed URL?

A temporary URL with a signature that lets users without AWS credentials temporarily access private objects. You can set an expiration time.


Next Steps

S3 is one of AWS's most important services—almost every AWS architecture uses it. Master S3, and you've mastered the core of cloud storage.

Recommended Learning Path:

  1. Hands-on: Create a Bucket, upload files, set up Lifecycle
  2. With EC2: Let EC2 applications access S3
  3. With Lambda: Set up S3 Events to trigger Lambda
  4. Advanced: CloudFront + S3 static website

Need help with S3 architecture planning?

From storage class selection, Lifecycle configuration to security settings, S3 has many details to consider. The CloudInsight team has extensive S3 architecture experience, helping multiple enterprises optimize storage costs and performance.

Schedule a free consultation and let us design the optimal S3 architecture for you.


Further Reading


Illustration: S3 Storage Classes Comparison

Scene Description: S3 storage classes comparison chart showing Standard, IA, Glacier tiers with their pricing, access times, and use cases in a visual hierarchy.

Visual Focus:

  • Main content clearly presented

Required Elements:

  • Key elements as described

Required Text: None

Color Scheme: Professional, clear

Avoid: Abstract graphics, gears, glowing effects

Slug: s3-storage-classes-comparison

Illustration: S3 Pricing Breakdown

Scene Description: S3 pricing breakdown infographic showing storage fees, request fees, and data transfer fees as three components with example calculations.

Visual Focus:

  • Main content clearly presented

Required Elements:

  • Key elements as described

Required Text: None

Color Scheme: Professional, clear

Avoid: Abstract graphics, gears, glowing effects

Slug: s3-pricing-breakdown

Illustration: S3 Lifecycle Policy Flow

Scene Description: S3 Lifecycle Policy flow diagram showing automatic data tiering from Standard to IA to Glacier over time with cost savings indicators.

Visual Focus:

  • Main content clearly presented

Required Elements:

  • Key elements as described

Required Text: None

Color Scheme: Professional, clear

Avoid: Abstract graphics, gears, glowing effects

Slug: s3-lifecycle-policy-flow

Illustration: S3 Bucket Structure

Scene Description: S3 bucket and object structure diagram showing bucket naming, object keys, and the flat namespace concept with folder-like prefixes.

Visual Focus:

  • Main content clearly presented

Required Elements:

  • Key elements as described

Required Text: None

Color Scheme: Professional, clear

Avoid: Abstract graphics, gears, glowing effects

Slug: s3-bucket-structure

Need Professional Cloud Advice?

Whether you're evaluating cloud platforms, optimizing existing architecture, or looking for cost-saving solutions, we can help

Book Free Consultation

Related Articles