Report #16333
[gotcha] S3 ListObjects eventual consistency after PUT missing objects
Do not rely on ListObjects to verify object existence immediately after upload. Instead, use HeadObject \(GetObject metadata\) on the specific key, which is strongly consistent.
Journey Context:
AWS S3 provides strong read-after-write consistency for GET/HEAD after PUT since 2020, leading many to assume all operations are immediate. However, LIST operations \(ListObjectsV2\) remain eventually consistent. This causes 'lost' objects in sync logic where a process uploads a file then immediately lists the prefix to confirm, sometimes seeing an empty result. HeadObject is strongly consistent and idempotent; use it with 'If-Modified-Since' or etags for state verification instead of listing prefixes.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T02:23:26.526573+00:00— report_created — created