Amazon S3 – Object Storage on the Cloud


Amazon S3 (Simple Storage Service) is one of the most widely used services in AWS. Whether you're a developer, cloud engineer, or business owner, storing and retrieving data reliably and securely is a must — and S3 is built exactly for that.
Let’s break it down from scratch and understand what S3 is, why it exists, how it works, and how to use it effectively.
What is Amazon S3?
Amazon S3 is an object storage service that allows you to store and retrieve any amount of data, at any time, from anywhere on the web.
Key Features:
Object storage (not file or block)
Infinitely scalable
Secure, durable, and highly available
Pay-as-you-go pricing
Integrates easily with many AWS services
Why Was S3 Created?
Before cloud storage, companies had to manage large physical storage systems, which were costly and difficult to scale. Data durability and uptime were also major challenges.
Amazon S3, introduced in 2006, provides:
Durability without managing hardware
Cloud-based low-cost storage
Seamless scalability
On-demand access to data
What Type of Data Can You Store in S3?
You can store almost any type of data:
Static website files (HTML, CSS, JS)
Application logs and backups
Images, videos, and audio files
Documents, PDFs, and datasets
ML training data
Software binaries and Docker layers
Max Object Size:
Up to 5 TB per object
For large files (100MB+), multi-part upload is recommended
Is S3 a Global Service?
Yes, S3 is a global service. However, buckets are created in specific regions. This helps reduce latency, comply with regulations, and manage costs. Regardless of region, the stored data is accessible globally via APIs or pre-signed URLs.
What is a Bucket?
A bucket is the top-level container in S3 where your data (objects) are stored.
Bucket Characteristics:
Bucket names must be globally unique
Bucket names must follow DNS-compliant naming rules
You choose the region where the bucket is created
You cannot rename a bucket once created
What is an Object?
An object is the fundamental entity stored in S3.
Object Structure:
Key – Unique identifier for the object within a bucket
Value – The actual data or content of the object
Metadata – Information like content-type, last modified, etc.
Version ID – If versioning is enabled
Permissions – Object-level access control
Understanding S3 Permissions
Permissions in S3 can be managed in several ways:
IAM Policies – Control access for IAM users or roles
Bucket Policies – Apply to the entire bucket
ACLs (Access Control Lists) – Provide finer control at the object level
Block Public Access – Globally restrict public access at the bucket level
What is Bucket Versioning?
Bucket versioning allows you to preserve, retrieve, and restore every version of every object stored in an S3 bucket.
Why Use Versioning?
Restore accidentally deleted or overwritten files
Protect data from accidental or malicious deletion
Enable rollback to previous states
Once enabled, versioning cannot be disabled—only suspended.
S3 Storage Classes
Amazon S3 offers a range of storage classes optimized for different use cases.
Storage Class | Use Case | Retrieval Time | Cost |
Standard | Frequently accessed data | Milliseconds | High |
Intelligent-Tiering | Automatic cost optimization | Milliseconds | Moderate |
Standard-IA | Infrequently accessed data | Milliseconds | Low |
One Zone-IA | Infrequent access, single zone | Milliseconds | Low |
Glacier Instant Retrieval | Archived data, quick access | Milliseconds | Very Low |
Glacier Flexible Retrieval | Long-term archive, flexible time | Minutes to hours | Very Low |
Glacier Deep Archive | Cold archive, long retrieval | Hours | Lowest |
What is Object Lock?
Object Lock prevents objects from being deleted or modified for a fixed time period or indefinitely.
Object Lock Modes:
Governance Mode – Users with special permissions can override
Compliance Mode – No one can delete or overwrite until the retention period expires
Use Cases:
Legal or regulatory compliance
Financial data retention
Immutable backups
How to Create and Use Amazon S3
Step 1: Create a Bucket
Go to the AWS Management Console > S3
Click "Create Bucket"
Enter a unique bucket name
Choose the region
(Optional) Enable versioning and object lock
Configure permissions
Click "Create"
Step 2: Upload an Object
Open your bucket
Click "Upload"
Add files or folders
Choose storage class and permissions
Click "Upload"
Step 3: Set a Bucket Policy (Example: Public Read Access)
jsonCopyEdit{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::your-bucket-name/*"
}
]
}
Step 4: Enable Versioning
Open the bucket
Go to the "Properties" tab
Enable versioning
Step 5: Use Object Lock (Optional)
Must enable during bucket creation
Choose default retention settings or apply per object
Best Practices
Block public access unless specifically needed
Enable versioning for critical data
Use lifecycle rules to transition data to lower-cost storage
Apply encryption (SSE-S3 or SSE-KMS) for sensitive content
Enable access logs and CloudWatch monitoring
Use pre-signed URLs for temporary access
Organize objects using logical prefixes
Real-World Use Cases
Hosting static websites
Centralized log storage from applications or services
Backup and disaster recovery
Content delivery with CloudFront
Data lake for analytics and ML workloads
Conclusion
Amazon S3 is more than just a storage service—it's the backbone of many modern cloud architectures. With its global reach, unbeatable durability, multiple storage classes, and security features, S3 is the ideal solution for scalable, flexible, and cost-effective object storage
Subscribe to my newsletter
Read articles from Shreyash Myakal directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Shreyash Myakal
Shreyash Myakal
I’m currently learning Linux, AWS, DevOps, MySQL, and related technologies, aiming to become a Cloud Engineer. Passionate about cloud infrastructure and automation, I’m excited to apply these skills in real-world projects.