Is Amazon S3 eventually consistent or strongly consistent?
S3 gives strong read-after-write consistency for all object operations. After a successful PUT, overwrite or DELETE, any later GET or LIST immediately reflects the change.
Explain it simply
Older S3 behaved like a college notice board that was updated in a few minutes: you might read the old notice right after the new one was pinned. Today the board updates instantly. The moment the peon says "done", everyone who looks sees the new notice.
Example
PUT report.pdf (new key) -> success
GET report.pdf -> returns the new object, always
PUT report.pdf (overwrite) -> success
GET report.pdf -> returns the new version, never the old one
DELETE report.pdf -> success
GET report.pdf -> 404 Not Found
LIST bucket -> key no longer appearsBefore December 2020, overwrites and deletes were eventually consistent and a new object could briefly be missing from listings. AWS then made S3 strongly consistent at no extra cost and without a performance penalty.
This matters for data pipelines: a job that writes files and then lists the prefix to find them no longer needs retry logic or extra tools to hide stale listings. Consistency is per object, so S3 still does not provide multi-object transactions; two clients writing the same key at the same time end with the last write winning.
What to say in the interview
"S3 is strongly consistent for reads after writes, overwrites, deletes and listings, since late 2020. There are no multi-object transactions though, so concurrent writers to the same key follow last-writer-wins."
Common mistakes
- Quoting the old eventual-consistency rule for overwrites as if it still applied.