S3: Object Storage

AWS Fundamentals

Chapter 4 · S3: Object Storage

Chapter 1 named S3 as AWS's own real first service — launched 14 March 2006 in the US, expanding to Europe in November 2007, ahead even of EC2. Where EC2 (Chapter 3) gives you a virtual disk attached to a running machine, S3 is genuinely different: object storage, with no server to manage at all — you store and retrieve whole files ("objects") directly over HTTP, addressed by a key, not a filesystem path.

Buckets & Objects

An S3 bucket is a real, top-level container with a name that must be globally unique across the whole of AWS — not just your own account. Inside a bucket, every object (a file, plus metadata) is addressed by a real, flat key — S3 has no true folder hierarchy, even though its own console displays keys containing / as if they were nested folders.

Real Storage Classes

S3 offers several real, distinct storage classes, each trading cost against retrieval speed and access frequency:

Storage ClassReal Use Case
S3 StandardFrequently accessed data — the real default
S3 Standard-IAInfrequently accessed data still needing millisecond retrieval
S3 One Zone-IAInfrequently accessed, easily recreated data — stored in one AZ only, at lower cost
S3 Intelligent-TieringUnpredictable access patterns — AWS automatically moves objects between tiers
S3 Glacier (Instant/Flexible Retrieval)Archival data, retrieved rarely, at minutes-to-hours notice
S3 Glacier Deep ArchiveThe cheapest real tier — long-term archival retrieved perhaps once a year, hours of retrieval time

Durability vs. Availability — a Real, Important Distinction

S3 Standard is designed for a real, documented 99.999999999% durability figure — informally, "11 nines" — meaning the odds of losing an object due to real infrastructure failure are vanishingly small, since S3 automatically stores redundant copies across multiple facilities. Availability is a genuinely separate real number (typically 99.9% for S3 Standard) — the odds S3 is reachable and responsive at any given moment. An object can be perfectly durable (never lost) while briefly unavailable (temporarily unreachable) — the two numbers answer different real questions.

Versioning

S3 versioning is real, and disabled by default. Once enabled on a bucket, every overwrite or delete of an object keeps the prior version recoverable instead of discarding it outright — a real, direct defense against the single most common real S3 accident: an application (or a person) overwriting or deleting the wrong object.

Lifecycle Policies

A lifecycle policy automatically transitions objects between storage classes, or expires (deletes) them entirely, based on real, defined rules — for example, "move to S3 Glacier after 90 days, delete after 7 years." This turns the cost/retrieval-speed tradeoff from Chapter's own storage-class table into something managed automatically over an object's own real lifetime, rather than requiring manual intervention.

Static Website Hosting

A bucket can be configured to serve its own objects directly as a website — an index.html, CSS, JavaScript, and images, all served straight from S3 with no real web server to patch or manage. This works well for genuinely static content; anything needing server-side logic still needs EC2, Lambda (Chapter 7), or an equivalent compute service behind it.

A Real Case Study: The 2017 Deep Root Analytics Leak

What Actually Happened
In June 2017, a security researcher discovered political data on more than 198 million American citizens sitting exposed on an unsecured, publicly accessible Amazon cloud storage server belonging to Deep Root Analytics, a political data-analytics firm — widely reported at the time as a misconfigured, publicly readable S3 bucket. No breach of AWS's own real infrastructure was involved; the bucket's own access settings had simply been left open.

This is a real, direct parallel to Chapter 2's own Capital One case study, applied to storage instead of compute: the failure sat squarely on the customer's side of the shared responsibility model (Chapter 1). AWS later introduced S3 Block Public Access, a real, account- and bucket-level setting that can override individual bucket policies to prevent exactly this class of accidental public exposure — now recommended as the default, on-by-default safeguard for any bucket that isn't deliberately, intentionally public (like a static website).

Hands-On Exercises

Exercise 1

A company stores compliance records it must legally retain for 7 years, but almost never actually needs to read after the first 90 days. Design a real lifecycle policy for this data, naming which storage class(es) it should move through and when.

📄 View solution
Exercise 2

Explain, in your own words, why "S3 has 11 nines of durability" does not mean "S3 is always available," and give one real, concrete scenario where these two properties could genuinely diverge.

📄 View solution
Exercise 3

Using the real 2017 Deep Root Analytics leak as your example, explain why S3 Block Public Access existing as an account-level override (rather than only a per-bucket setting) is a meaningfully stronger real safeguard than simply telling every engineer to configure each bucket correctly.

📄 View solution

Chapter 4 Quick Reference

  • S3 — object storage, addressed by key, no filesystem or server to manage; AWS's own first real service (2006)
  • Storage classes — Standard, Standard-IA, One Zone-IA, Intelligent-Tiering, Glacier tiers, Glacier Deep Archive — trading cost against access speed/frequency
  • Durability (11 nines) — the odds data is never lost; Availability — the odds it's reachable right now; genuinely different real numbers
  • Versioning — off by default; keeps prior versions recoverable after an overwrite or delete
  • Lifecycle policies — automatically transition or expire objects over time
  • Real case study — the 2017 Deep Root Analytics leak (198 million records), a customer-side misconfiguration; S3 Block Public Access is AWS's own real, account-level fix