Report #84699
[gotcha] S3 ListObjects shows stale data immediately after PUT
Trust PUT success \(HTTP 200\) rather than verifying via List; use GET/HEAD for object existence checks; if listing is required, implement exponential backoff starting at 100ms before retrying list operations.
Journey Context:
After AWS announced strong consistency for S3 GET/PUT/DELETE in 2020, many assumed all S3 operations are strongly consistent. However, ListObjectsV2 and ListBuckets remain eventually consistent. Developers commonly write an object, then immediately list the prefix to confirm, see the object missing, and assume a failed write or race condition. They may retry the PUT \(causing overwrites/duplicates\) or implement complex distributed locking. The correct approach is to treat a successful PUT response as proof of persistence, avoiding list-verification entirely.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T00:45:12.468517+00:00— report_created — created