• Pricing
© 2026 Serverless, Inc. All rights reserved.

Framework

  • Overview
  • Documentation
  • Plugins360
  • Pricing

Learn

  • Blog
  • GuidesUpdated
  • Examples240
  • Courses

Resources

  • Support
  • Security
  • Trust Center
  • Status

Community

  • Slack
  • GitHub47k
  • Forum
  • Meetups

Company

  • About
  • Careers
  • Contact
  • Partners

Legal

  • Terms of Service
  • Privacy Policy
  • Trademark
  • DMCA
Updated March 2026

The Ultimate Guide to
Amazon S3

Amazon S3 (Simple Storage Service) is a fully managed object storage service from AWS. It stores any amount of data and makes it available via simple API calls, forming the backbone of file storage for serverless applications.

Build with S3Read the Docs

Amazon S3 Key Features

S3 replaces self-managed file servers with a fully managed service that handles storage, availability, durability, and access control out of the box.

Core

Unlimited Object Storage

Store any number of objects, each up to 5 TB, across unlimited buckets. S3 handles replication and durability (99.999999999%) automatically with no capacity planning required.

Compute

Lambda Event Triggers

Trigger Lambda functions automatically when objects are created, modified, or deleted. Build event-driven pipelines for image processing, data transformation, and more.

Security

Access Control & Encryption

Fine-grained permissions via bucket policies, ACLs, and IAM roles. Server-side encryption with S3-managed keys, KMS keys, or customer-provided keys. Presigned URLs for temporary access.

Hosting

Static Website Hosting

Serve HTML, CSS, JavaScript, and media files directly from S3 with a public URL. Combine with CloudFront for global CDN distribution and custom domain support.

Cost

Storage Classes & Lifecycle

Choose from Standard, Infrequent Access, One Zone IA, Glacier, and Deep Archive. Lifecycle rules automatically transition or expire objects to minimize costs.

Durability

Versioning & Replication

Enable versioning to keep every revision of every object. Cross-region replication copies objects to buckets in other regions for disaster recovery and compliance.

How Amazon S3 Works

S3 is a managed object store. You upload files (objects) into buckets, and AWS handles storage, replication, and delivery so you never manage disk infrastructure.

1

Upload

You create a bucket and upload objects via the AWS Console, CLI, SDK, or a presigned URL. Each object gets a unique key (path) within the bucket.

2

Store

S3 replicates the object across multiple facilities within your chosen region, providing 99.999999999% durability. Lifecycle rules can transition objects between storage classes automatically.

3

Access

Retrieve objects via the S3 API, a public URL, or a presigned URL. S3 event notifications can trigger Lambda functions, SQS queues, or SNS topics whenever objects change.

AWS Service Integrations

S3 connects directly with many AWS services, making it a central hub for data in your architecture:

AWS Lambda

Trigger functions when objects are created, modified, or deleted. The most common integration for serverless file processing.

Amazon CloudFront

Distribute S3 content globally via CDN edge locations for low-latency downloads and static site hosting.

Amazon Athena

Run SQL queries directly against data stored in S3 without loading it into a database. Great for analytics and log analysis.

AWS IAM & KMS

Control access with IAM policies and bucket policies. Encrypt objects at rest with KMS-managed keys or S3-managed keys.

Amazon SQS & SNS

Receive S3 event notifications in queues or topics to decouple processing from uploads.

S3 Glacier

Archive infrequently accessed data at a fraction of the cost. Lifecycle rules automate transitions from Standard to Glacier storage.

Using S3 with the Serverless Framework

The Serverless Framework makes it simple to create S3 buckets and wire up Lambda functions to respond to S3 events. Define your bucket and event triggers directly in serverless.yml:

serverless.yml
service: my-s3-app

provider:
  name: aws
  runtime: nodejs22.x

functions:
  # Trigger on new uploads
  processUpload:
    handler: handler.processUpload
    events:
      - s3:
          bucket: my-uploads
          event: s3:ObjectCreated:*

  # Filter by prefix and suffix
  processImage:
    handler: handler.processImage
    events:
      - s3:
          bucket: my-uploads
          event: s3:ObjectCreated:*
          rules:
            - prefix: images/
            - suffix: .jpg

  # Generate presigned upload URL
  getUploadUrl:
    handler: handler.getUploadUrl
    events:
      - httpApi:
          path: /upload-url
          method: get

The framework handles all CloudFormation resource creation: S3 bucket configuration, Lambda permissions, IAM roles, and event notification setup. It also supports existing buckets, custom bucket policies, CORS configuration, and lifecycle rules.

Benefits of Amazon S3

Virtually Unlimited Scalability

S3 imposes no practical limits on the number of objects or total data stored in a bucket. A single AWS account can hold hundreds of buckets, each containing petabytes of data, while still providing low-latency access to every object. You never provision capacity or worry about running out of disk space.

Minimal Setup, Fully Managed

Getting started takes minutes. Create a bucket, choose access settings, and start uploading. AWS handles replication across multiple facilities, hardware failures, and capacity planning. There are no servers to patch, no disks to monitor, and no backup jobs to schedule.

Deep AWS Ecosystem Integration

S3 integrates natively with Lambda for event-driven processing, CloudFront for global CDN delivery, Athena for SQL analytics, RDS for database backups, and dozens of other services. These integrations let you build complex workflows with very little custom code.

Flexible Storage Classes

Choose from Standard, Infrequent Access, One Zone IA, Intelligent-Tiering, Glacier Instant Retrieval, Glacier Flexible Retrieval, and Glacier Deep Archive. Lifecycle policies automate transitions between classes, so frequently accessed data stays fast while archived data costs a fraction of a cent per GB.

Trade-offs & Limitations

S3 is the right choice for most serverless storage needs, but these constraints are worth understanding upfront.

Cost can grow quickly without lifecycle rules

S3 pricing is pay-per-use, which works well at small scale. As data accumulates in production, storage and data transfer costs can rise sharply. Implement lifecycle rules early to expire or transition objects you no longer need.

Complex storage class model

S3 offers many storage classes, each with different pricing, retrieval latency, and minimum storage duration requirements. Choosing the wrong class can lead to unexpected charges. Spend time understanding which classes fit your access patterns before committing.

Unlimited scalability requires discipline

Because S3 never says no to more data, teams can make poor decisions about what to store and why. Without periodic reviews of bucket contents and spending, costs can spiral. Establish tagging conventions and audit storage regularly.

Limited default visibility into bucket contents

S3 does not automatically categorize or label your objects. Understanding what is stored in a bucket requires tagging objects at creation time. Set up a tagging convention early and enforce it across all applications that write to S3.

Buckets cannot move between regions

Once created, a bucket is permanently bound to its region. To relocate data, you must create a new bucket in the target region and copy objects over, incurring transfer charges. Plan your region strategy before creating production buckets.

Amazon S3 Pricing

S3 pricing is based on storage volume, number of requests, and data transfer. Costs vary by storage class and region.

Free Tier (First 12 Months)

5 GB

S3 Standard storage

20K

GET requests / month

2K

PUT requests / month

ServicePrice
S3 Standard storage$0.023 / GB / month
S3 Infrequent Access$0.0125 / GB / month
S3 One Zone IA$0.01 / GB / month
S3 Glacier Instant Retrieval$0.004 / GB / month
S3 Glacier Flexible Retrieval$0.0036 / GB / month
S3 Glacier Deep Archive$0.00099 / GB / month
PUT, COPY, POST, LIST requests$0.005 / 1,000 requests
GET, SELECT requests$0.0004 / 1,000 requests
Data transfer out (internet)$0.09 / GB (lower at volume)
Data transfer out (CloudFront)Free (CloudFront pricing applies)

Example: 100K uploads/day, 500 KB each, retained 60 days

Storage (60 days): 3 TB x $0.023/GB = $65.80/month

PUT requests: 3M x $0.005/1K = $15.00/month

GET requests: 3M x $0.0004/1K = $1.20/month

Data transfer out: 1.5 TB x $0.09/GB = $128.75/month

Total: approximately $210.75/month. Use lifecycle rules to expire old objects and CloudFront to reduce transfer costs.

Glacier Retrieval Costs

Retrieval fees apply on top of storage costs. Choose a retrieval tier based on urgency.

Storage ClassExpeditedStandardBulk
Glacier Flexible Retrieval$0.03 / GB$0.01 / GB$0.0025 / GB
Glacier Deep ArchiveN/A$0.02 / GB$0.0025 / GB

See the official S3 pricing page for current regional rates. Pricing varies by region, with GovCloud regions costing nearly twice as much as us-east-1.

When to Use Amazon S3

Use S3 when you need to store user-uploaded files (images, videos, documents), host static websites or single-page applications, build event-driven processing pipelines triggered by file uploads, store application data that does not fit in a database, or archive logs and audit trails for long-term retention.

Consider alternatives when you need a file system for a running EC2 instance (use Amazon EBS), need ultra-low-latency global downloads (add Amazon CloudFront in front of S3), or need a relational database (use Amazon RDS). For long-term archival at the lowest cost, use S3 Glacier storage classes with lifecycle rules.

S3 Alternatives

S3 is the default choice for object storage on AWS, but other services may be a better fit depending on your workload, budget, or cloud provider.

Amazon EBS

Block storage attached to EC2 instances. Not object storage. Use for databases, application file systems, or any workload that requires a mounted disk on a running instance.

Amazon EFS

Shared file system accessible from multiple EC2 instances and Lambda functions simultaneously. Use when several compute resources need to read and write the same files concurrently.

AWS Glacier / S3 Glacier

Archive storage starting at $0.004/GB per month. Use for backups, compliance archives, and data that is rarely accessed. Retrieval can take minutes to hours depending on the tier.

Backblaze B2

S3-compatible object storage at roughly one quarter the cost of S3 Standard. Storage runs about $0.005/GB per month with $0.01/GB data transfer. A strong option for cost-sensitive workloads.

Google Cloud Storage

Google's equivalent to S3 with similar storage classes and pricing. Use if your infrastructure already runs on Google Cloud Platform or if you need tight integration with BigQuery and other GCP services.

Azure Blob Storage

Microsoft's object storage service with Hot, Cool, and Archive tiers. Use if your organization is already on Azure or needs integration with Azure-native services like Azure Functions and Cosmos DB.

S3 Limits and Quotas

Key service limits to keep in mind when designing your storage architecture. Most soft limits can be increased through an AWS support request.

ResourceLimitNotes
Max object size5 TBSingle PUT limited to 5 GB. Use multipart upload for larger objects.
Buckets per account100Adjustable up to 1,000 via support request.
Objects per bucketUnlimitedNo cap on the number of objects stored in a single bucket.
Bucket name3 to 63 charactersMust be globally unique across all AWS accounts.
Request rate per prefix5,500 GET/s, 3,500 PUT/sDistribute keys across prefixes to scale beyond these limits.
Lifecycle rules per bucket1,000Each rule can target objects by prefix, tag, or size.
Tags per object10Key-value pairs for cost allocation and access control.
Metadata per object2 KB totalCombined size of all user-defined metadata headers.
Bucket regionFixed at creationBuckets cannot be moved between regions after creation.

Learn More

Documentation

  • S3 Event Docs
  • Presigned URL Tutorial
  • AWS Lambda Guide
  • AWS S3 Documentation

Related Guides

  • Amazon CloudFront (CDN)
  • Amazon DynamoDB
  • Amazon API Gateway
  • Browse all guides

Amazon S3 FAQ

Common questions about Amazon S3.

What is Amazon S3?
Amazon S3 (Simple Storage Service) is a fully managed object storage service from AWS. It lets you store and retrieve any amount of data at any time, from anywhere on the web. S3 organizes files into buckets with prefix-based paths and handles availability, durability, and scaling automatically.
Can S3 be used as a relational database?
Technically yes, but it is not common. S3 Select provides an SQL-like query interface for CSV and JSON files stored in S3. However, it is not a true relational database. For relational workloads, use Amazon RDS or Amazon Aurora instead.
What is S3 Transfer Acceleration?
S3 Transfer Acceleration speeds up uploads by routing files through the nearest CloudFront edge location before forwarding them to your S3 bucket. It costs an additional $0.04 to $0.08 per GB on top of standard data transfer charges.
Can S3 objects be encrypted?
Yes. S3 supports per-object encryption with per-bucket defaults. Objects are encrypted at rest and decrypted on access. You can use S3-managed keys (SSE-S3), AWS KMS-managed keys (SSE-KMS), or your own customer-provided keys (SSE-C).
Is S3 a CDN?
No. S3 stores files in a single region and is not optimized for low-latency downloads worldwide. For CDN functionality, use Amazon CloudFront in front of your S3 bucket. CloudFront caches your files at edge locations around the globe.
Can I use S3 for backups?
Yes. S3 is a solid choice for database backups and data archiving. It has native integration with Amazon RDS for continuous backups. For large volumes of backup data, use lifecycle rules and S3 Glacier to reduce long-term storage costs.
When should I use S3 versus EC2 storage?
Use S3 for files that need to be accessible to users or other services, such as images, static assets, and data exports. Use EC2 instance storage (EBS) for disks attached to running compute instances, such as application caches, temp files, or databases running on EC2.
Can I use S3 for video streaming?
Yes. S3 can serve video content directly via HTTP, and it supports byte-range fetches so players can seek to any point without downloading the entire file. For production video delivery, place Amazon CloudFront in front of your S3 bucket to reduce latency and bandwidth costs. For adaptive bitrate streaming (HLS, DASH), use AWS Elemental MediaConvert to transcode your source video into multiple resolutions and store the segments in S3.

Build Event-Driven Apps with S3

Deploy an S3 bucket with Lambda event triggers in minutes using the Serverless Framework.

Get Started FreeView Documentation