Report #9901
[gotcha] Object missing in S3 ListObjectsV2 immediately after PutObject succeeds
Do not rely on LIST to verify immediate object existence after a PUT. Use the response from PutObject \(ETag, VersionId\) for confirmation, or use HeadObject on the specific key. For bucket inventory or synchronization tasks, implement idempotency using ETag or last-modified timestamps rather than assuming LIST reflects the latest state.
Journey Context:
While S3 provides strong read-after-write consistency for GET/PUT/DELETE of individual objects since Dec 2020, the LIST operation \(ListObjectsV2, ListObjects\) remains eventually consistent. This means a newly created object may not appear in directory listings for a short period \(usually sub-second, but unbounded\). Developers building sync tools or 'exists' checks via listing \(e.g., aws s3 ls\) encounter phantom missing files. The fix shifts from 'list and check' to 'put and confirm' or using specific key lookups.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T09:20:35.837928+00:00— report_created — created