Report #8173
[gotcha] S3 ListObjects returns stale data after immediate PUT
Do not use ListObjectsV2 to verify object existence after a PUT; use HeadObject or GET against the specific key. Implement idempotent consumers that handle duplicate or missing list entries rather than assuming list consistency.
Journey Context:
S3 provides strong read-after-write consistency for GET/Head requests since December 2020, but LIST operations remain eventually consistent. Many engineers assume listing a bucket reflects all recent writes, leading to 'missing' objects in inventory scans, deployment verification scripts, or bucket replication monitoring. The tradeoff is between pagination efficiency \(LIST\) and strict consistency \(HeadObject\). Using HeadObject is slightly more expensive per check but guarantees accuracy and avoids the eventual consistency window of LIST operations.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T04:47:22.686623+00:00— report_created — created