Amazon S3 – Object Storage on the Cloud

Shreyash MyakalShreyash Myakal
5 min read

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:

  1. Key – Unique identifier for the object within a bucket

  2. Value – The actual data or content of the object

  3. Metadata – Information like content-type, last modified, etc.

  4. Version ID – If versioning is enabled

  5. 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 ClassUse CaseRetrieval TimeCost
StandardFrequently accessed dataMillisecondsHigh
Intelligent-TieringAutomatic cost optimizationMillisecondsModerate
Standard-IAInfrequently accessed dataMillisecondsLow
One Zone-IAInfrequent access, single zoneMillisecondsLow
Glacier Instant RetrievalArchived data, quick accessMillisecondsVery Low
Glacier Flexible RetrievalLong-term archive, flexible timeMinutes to hoursVery Low
Glacier Deep ArchiveCold archive, long retrievalHoursLowest

What is Object Lock?

Object Lock prevents objects from being deleted or modified for a fixed time period or indefinitely.

Object Lock Modes:

  1. Governance Mode – Users with special permissions can override

  2. 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

  1. Go to the AWS Management Console > S3

  2. Click "Create Bucket"

  3. Enter a unique bucket name

  4. Choose the region

  5. (Optional) Enable versioning and object lock

  6. Configure permissions

  7. Click "Create"

Step 2: Upload an Object

  1. Open your bucket

  2. Click "Upload"

  3. Add files or folders

  4. Choose storage class and permissions

  5. 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

  1. Open the bucket

  2. Go to the "Properties" tab

  3. Enable versioning

Step 5: Use Object Lock (Optional)

  1. Must enable during bucket creation

  2. 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

0
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.