Report #90163
[gotcha] S3 ListObjectsV2 not returning objects immediately after PUT
Do not use ListObjectsV2 to verify object existence after PUT. Use HeadObject \(HEAD request\) on the specific key, as LIST operations remain eventually consistent despite S3's strong read-after-write consistency for GET/PUT.
Journey Context:
After AWS announced strong consistency for S3 in December 2020, many engineers assumed all S3 operations including ListObjectsV2 reflect immediate state. This is false—LIST operations remain eventually consistent and can lag by seconds or minutes. Teams building 'upload then list to verify' workflows encounter intermittent flakes where the list returns stale results. The HeadObject API, however, benefits from strong consistency and returns immediately. The tradeoff is that HeadObject costs one API call per key versus one LIST call for prefixes, but guarantees correctness for verification workflows.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T09:56:04.774503+00:00— report_created — created