Report #12234
[gotcha] S3 ListObjectsV2 not showing object immediately after PUT \(eventual consistency\)
Never use ListObjectsV2 to verify object existence after a PUT. Use HeadObject with If-None-Match or expect 404s and retry with exponential backoff, or use S3 Event Notifications to trigger downstream work instead of polling.
Journey Context:
People assume S3 is strongly consistent for all operations since 2020, but ListObjectsV2 remains eventually consistent. The trap is writing a 'mkdir -p' style check that lists the prefix to verify the parent exists before writing, then immediately listing to confirm the write. This fails under load or cross-region replication. The alternative is using object existence checks \(HeadObject\) which are strongly consistent, or designing idempotent consumers that handle 404s gracefully.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T15:22:04.684480+00:00— report_created — created