PlayCloudLabs
Sign in
  1. Learn
  2. AWS
  3. Storage
  4. S3
AWSGCP laterAzure later

S3Amazon Simple Storage Service

StorageCore service · full depthFree while we build the libraryChecked against AWS docs · 15 Sept 2026

Object storage for any amount of data: files kept as objects in buckets, designed for eleven nines of durability, and private until you grant access.

Where S3 takes you6 steps, all open

  1. I know the problem it solves
  2. I can picture it
  3. I know how it scales
  4. I know when to choose it
  5. I can use it in a design
  6. I can answer an exam question

What & why

Any amount of data, as objects

Amazon S3 stores data as objects in buckets. An object is a file and the metadata that describes it, found by its key, such as photos/puppy.jpg, in a bucket you create in one Region. A bucket holds any number of objects, and one object can be up to 50 TB.

Durable, and private by default. Every storage class except the two One Zone classes keeps data across at least three Availability Zones, designed for eleven nines of durability. Buckets and objects are private until you grant access, and every new object is encrypted.

Reach for it when

  • files, images, backups or logs pile up in any amount
  • a static website, or the origin behind CloudFront
  • a data lake that many services read
  • data must be kept for years at falling cost: Lifecycle to the Glacier classes

It is the wrong tool when

  • an instance needs a disk for a database: that is EBS
  • many servers need a shared file system: that is EFS
  • an application rewrites small parts of a file in place: S3 replaces whole objects

Mental model

A cloakroom that never runs out of hooks

Hand over a coat and you get a ticket; the coat is kept safe in the back, in several rooms at once. Show the ticket and you get the coat. You can ask the cloakroom to keep every coat ever handed in under the same ticket, to move coats nobody collects to cheaper storage, or to give a friend a signed pass that works until tonight.

The cloakrooma container you create in one RegionBucket
The ticket numberthe object's unique name in the bucketKey
The coat and its tagthe data and its metadataObject
Every coat kept under one ticketevery version of an object is keptVersioning
Old coats moved to the basementcheaper classes as objects ageLifecycle
A signed pass for a friendtime-limited access without changing a policyPresigned URL

How it works

Bucket, objects, access
  1. Create a bucketGive it a name and a Region; neither can change later. Its objects never leave the Region unless you move or replicate them.
  2. Put objectsUp to 5 GB in a single PUT, and larger objects in parts with multipart upload. Each lands in S3 Standard unless you choose another class.
  3. Grant accessBuckets are private. IAM policies and bucket policies grant access, and Block Public Access stops anyone making them public by mistake.
  4. Read it backStrongly consistent: a read after a successful write or delete sees the new state at once.
Durability
11 ninesdesigned for, in multi-zone classes
Object size
Up to 50 TB5 GB in a single PUT
Request rate
3,500 / 5,500writes / reads a second, per prefix
Consistency
Strongread-after-write, for objects
Presigned URL
Up to 7 dayssigned with IAM user credentials
Bucket policy
20 KBat most
  1. Block Public Access

    Would any Block Public Access setting on the account or the bucket stop the access this request relies on?

  2. Policies

    Does an IAM policy or the bucket policy allow it, with no explicit deny? Nothing is allowed until something grants it.

  3. KMS key

    An object encrypted with SSE-KMS also needs permission to use its KMS key.

  4. The object

    Is there a current version to return? In a versioned bucket, a delete leaves a delete marker on top.

Pick a case to follow the request through each check.

Architecture

A bucket behind CloudFront

Architecture

CloudFront serves the bucket to browsers, a function makes a thumbnail of each upload, and a Lifecycle rule archives what nobody reads.

CloudFront serves the bucket to browsers, a function makes a thumbnail of each upload, and a Lifecycle rule archives what nobody reads.

The bucket stays private behind CloudFront. Origin access control lets the distribution read it, while the S3 website endpoint serves only publicly readable content, over HTTP and never HTTPS.

Uploads start work. An event notification can invoke a Lambda function, or go to an SQS queue, an SNS topic or EventBridge, each time an object is created.

Private instances reach S3 without the internet. A gateway endpoint in the VPC's route tables sends their S3 traffic privately, at no charge.

Scaling

Prefixes multiply the rate

S3 scales to high request rates by itself: at least 3,500 writes or 5,500 reads a second for each partitioned prefix, with no limit on how many prefixes a bucket has. Spread the keys over more prefixes and the rate multiplies; ten prefixes can serve 55,000 reads a second.

Capacity: 5,500 reads a second for each.

1,000 reads a second more than 2 prefixes can take. Add 1 more, or shed the load.

Scaling up takes a moment. While S3 grows to a new rate, you may see a few 503 Slow Down errors. They stop once it has scaled.

Big files in parts. Multipart upload sends the parts of one object in parallel and in any order; a single PUT stops at 5 GB.

Far-away uploads. Transfer Acceleration takes uploads in at the nearest CloudFront edge location and carries them to the bucket over an optimised network path.

Security

Private, encrypted, recoverable

Block Public Access stays on. It is on by default for new buckets and overrides any policy or ACL that would make data public. AWS recommends turning all four settings on for the whole account.

Policies, not ACLs. New buckets have ACLs disabled, with the bucket owner owning every object, and access is granted with IAM and bucket policies.

Encryption. Every new object is encrypted with SSE-S3 by default. Choose SSE-KMS or DSSE-KMS for keys you control and audit, SSE-C to send your own key with each request, or encrypt on the client before uploading.

Versioning, MFA delete and Object Lock. Versioning keeps every version, so a delete only adds a delete marker. MFA delete asks for an MFA code to delete a version or change versioning, and only the bucket owner's root user can turn it on. Object Lock stops versions being overwritten or deleted for a set time.

Presigned URLs hand out time-limited access with the permissions of whoever signed them, so treat each one like a key.

Cost

How you are charged, not what it costs today

Storage by the GB-month, set by the storage class, with minimum durations and minimum object sizes in the IA and Glacier classes.

Requests and retrievals: a charge for each request, and for each GB retrieved from the IA and Glacier classes.

Data transfer out. Data coming in from the internet is free.

Every version is a whole object. Three versions of a file are charged as three objects.

Replication adds the destination's storage and requests and the transfer between Regions; Same-Region Replication has no transfer charge.

Lifecycle and Intelligent-Tiering cut the bill as data cools. Intelligent-Tiering adds a small monitoring charge for each object, but no retrieval charges.

Prices change, so none are printed here. Check the S3 pricing page on aws.amazon.com.

Comparison

Storage classes, and the ways to replicate
ClassZonesMinimum durationRetrievalChoose it when
S3 StandardAt least 3NoneMilliseconds, no feeData read often
S3 Intelligent-TieringAt least 3NoneMilliseconds, no retrieval feesAccess unknown or changing
S3 Standard-IAAt least 330 daysMilliseconds, a fee per GBRead about once a month, and cannot be recreated
S3 One Zone-IA130 daysMilliseconds, a fee per GBData you can recreate, such as replicas
S3 Express One Zone1NoneSingle-digit millisecondsThe lowest latency, next to your compute
S3 Glacier classesAt least 390 or 180 daysMilliseconds to 48 hoursArchives: see S3 Glacier
ReplicationWhat it copiesChoose it when
Cross-Region ReplicationNew objects, to a bucket in another RegionCompliance distance, or users far from the source
Same-Region ReplicationNew objects, to a bucket in the same RegionGathering logs, or copies in another account
Batch ReplicationExisting objects, on demandObjects from before replication, or ones that failed
Replication Time Control99.99 percent of new objects within 15 minutesA replication time backed by an SLA

SAA traps

The phrase in the question, and what it means
make sure no bucket is ever made public by mistakeS3 Block Public Access, for the whole account

It overrides any policy or ACL that would grant public access.

recover objects deleted or overwritten by mistakeVersioning

A delete adds a delete marker, and every earlier version can be restored.

copy new objects to another Region automaticallyCross-Region Replication

It needs versioning on both buckets. Batch Replication copies the objects that were there before.

records must not be changed or deleted for seven years, by anyoneObject Lock in compliance mode

Not even the root user can shorten the retention period.

let someone download one private object for an hour, without changing any policyA presigned URL

It carries the signer's permissions until it expires.

upload a 20 GB fileMultipart upload

A single PUT takes at most 5 GB.

customers around the world upload to one bucket, slowlyTransfer Acceleration

Uploads enter at the nearest CloudFront edge location and travel on an optimised path.

a static website on S3 must be served over HTTPSPut CloudFront in front

S3 website endpoints do not support HTTPS.

access patterns are unknown, and retrieval charges must be avoidedS3 Intelligent-Tiering

It moves objects between tiers by itself, with no retrieval fees.

private instances must reach S3 without a NAT gatewayA gateway endpoint

It routes S3 traffic privately from the route tables, at no charge.

Scenario

Exam style, marked when you answer

A company stores monthly reports in S3. They are read often for 30 days and rarely for the rest of the year, and then must be kept for 7 more years for auditors, who can wait 48 hours for one. Reports that are deleted or overwritten by mistake must be recoverable. What should a solutions architect do?

Practice

Fill the gap, the way the challenges work

A phone app uploads photos with presigned URLs. The storage must hold an unknown and growing number of photos, designed for eleven nines of durability, and a function must make a thumbnail as each photo arrives. Where are the photos stored?

Mobile app· Phone appPick a service belowLambda· Thumbnail function

Quick revision

The night before the exam
Objects
In buckets, found by key; up to 50 TB each.
Durability
Eleven nines; at least 3 zones, except the One Zone classes.
Consistency
Strong read-after-write for objects.
Performance
3,500 writes and 5,500 reads a second, per prefix.
Uploads
Over 5 GB: multipart. From far away: Transfer Acceleration.
Access
Private by default; Block Public Access on; ACLs off.
Encryption
SSE-S3 by default; SSE-KMS, DSSE-KMS, SSE-C or client-side.
Versioning
Delete markers; MFA delete; needed for replication and Object Lock.
Replication
CRR and SRR for new objects, Batch for old ones, RTC within 15 minutes.
Website
HTTP only; CloudFront in front for HTTPS.

This whole page is free right now.The AWS library is still being written, so every page of it is open to everyone while that lasts. It becomes a paid bundle later; what you read today costs you nothing.

Next: S3 GlacierThree S3 storage classes for archives: Instant Retrieval, read in milliseconds; Flexible Retrieval, restored in minutes to hours; and Deep Archive, the lowest cost, restored within 12 to 48 hours.

Open S3 Glacier

Checked against

Every fact on this page was checked against AWS’s own documentation on 15 Sept 2026. If AWS has changed something since, its page is the one to trust.

Still there?

You have been away for a while. We have saved what you were working on in this browser. In 60 seconds you will be signed out to keep your account safe.