Report #68884
[gotcha] S3 ListObjectsV2 does not show newly created objects immediately despite PUT returning 200
Do not use ListObjectsV2 to verify object existence after PUT; use HeadObject or GET on the specific key, or implement idempotent handling that tolerates list latency
Journey Context:
Since December 2020, S3 provides strong read-after-write consistency for GET/PUT/DELETE operations on individual keys. However, List operations \(ListObjects, ListObjectsV2, ListMultipartUploads\) remain eventually consistent. When you PUT an object and immediately List the prefix, the object may not appear in the listing for an unspecified delay \(typically seconds, but theoretically longer\). This breaks common anti-patterns like 'list bucket to find new files' or 'check if upload succeeded by listing'. Developers often mistake this for a failed PUT and retry, causing duplicates, or they assume S3 is 'broken'. The correct pattern is to treat PUT success as ground truth; if you need to verify, HeadObject the specific key. For event-driven processing, use S3 Event Notifications instead of polling List.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T22:06:20.512255+00:00— report_created — created