Report #59548
[gotcha] S3 LIST remains eventually consistent and misses objects immediately after PUT
Do not use ListObjectsV2 to verify recent uploads; use HeadObject \(or GetObject\) which is strongly consistent. Architect workflows to track upload success via return codes or out-of-band state, not by listing.
Journey Context:
While S3 guarantees strong read-after-write consistency for GET and HEAD requests \(you always see the latest version\), LIST operations \(ListObjectsV2, ListObjects\) are eventually consistent. This means after uploading an object, a subsequent LIST call may not return the object for an indeterminate period \(typically seconds, but theoretically longer\). Engineers commonly implement 'upload then poll via list to verify' patterns which fail intermittently under load. The correct pattern is to rely on the HTTP 200 OK response from the PUT/CompleteMultipartUpload operation as confirmation of persistence, and use HeadObject if existence must be re-verified later.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T06:26:29.762758+00:00— report_created — created