Amazon Simple Storage Service (Amazon S3)
AWS S3 Core Concepts
What is AWS S3
Amazon S3 (Simple Storage Service) is a fully managed object storage solution offering industry-leading scalability, data availability, security, and performance. Think of it as a highly durable, highly available file store—similar to Dropbox or Google Drive—but deeply integrated into the AWS ecosystem.
Key Features
- Virtually unlimited storage capacity
- 99.999999999% (11 9’s) of data durability
- Fine-grained access control with IAM policies and bucket policies
- Multiple interfaces: Console, AWS CLI, AWS SDKs, REST API
Seamless AWS Integration
Because S3 is an AWS-native service, it integrates seamlessly with services like EC2, Lambda, and IAM. You can manage buckets and objects using:
- AWS Management Console
- AWS CLI
- AWS SDKs (e.g., Boto3 for Python)
- RESTful API calls
Object Storage vs. File and Block Storage
S3 is object-based storage: you upload whole objects (files) rather than individual blocks. It uses a flat namespace rather than a hierarchical filesystem, so you cannot mount an S3 bucket like an EBS volume or NFS share.
Storage Type | Description | Examples |
---|---|---|
Object | Stores entire files as objects | Amazon S3 |
File | Shares directories over a network | NFS, Amazon EFS |
Block | Presents raw block devices to OS | EBS, direct-attached SSDs |
Common Use Cases
- Storing application log files
- Hosting media assets (images, videos, audio)
- Saving CI/CD pipeline artifacts
Real-World Example: Offloading Media for a Website
In traditional web hosting, your server handles HTML, CSS, JavaScript, and all media. As traffic scales—imagine YouTube or Netflix—storing petabytes of video on web servers becomes costly and unscalable.
With S3:
- Keep only static assets (HTML/CSS/JS) on your web server
- Offload large media files to an S3 bucket
- Reference S3 URLs in your HTML so browsers fetch content directly from S3
Key Terminology
Buckets
A bucket is a container for objects—think of it as a top-level folder. Names must be globally unique across all AWS accounts.
# Create an S3 bucket in us-east-1
aws s3api create-bucket \
--bucket my-unique-bucket-name \
--region us-east-1
Objects
An object is any file stored in S3. Each object includes:
- Key: the unique object name (e.g.,
photos/vacation.jpg
) - Value: the actual file data
- Metadata: custom or system attributes (e.g.,
Content-Type
) - Version ID: if versioning is enabled
# Upload a file to S3
aws s3 cp ./vacation.jpg s3://my-unique-bucket-name/photos/vacation.jpg
Flat Namespace and “Folders”
Under the hood, S3 is a flat key-value store. The console mimics directories by treating prefixes (text before a /
) as folders.
music/song1.mp3
music/song2.mp3
music/song3.mp3
- These keys appear under a
music/
folder in the console but are stored flat in S3.
Durability and Availability
When you upload to S3, AWS replicates your data across multiple servers and Availability Zones (AZs) within a region, ensuring high durability and availability—even if an AZ fails.
Bucket Naming and Global Uniqueness
Each bucket name must be unique across all AWS accounts and regions. The bucket name appears in the URL:
https://my-unique-bucket-name.s3.amazonaws.com/
Warning
Choose bucket names carefully. Renaming or deleting buckets can disrupt applications that rely on them.
Limits and Restrictions
Resource | Limit |
---|---|
Number of buckets | 100 per account (increase to 1,000) |
Maximum object size | 5 TB |
Objects per bucket | Unlimited |
Note
You can request a service quota increase for more buckets or higher throughput in the AWS Console under Service Quotas.
In this lesson, we covered AWS S3’s fundamental concepts, common use cases, and architectural design. Next up: a hands-on demo to create and configure your first S3 bucket.
References
Watch Video
Watch video content