Report #56711
[gotcha] S3 LIST operations missing objects immediately after PUT
Do not rely on LIST for immediate read-after-write consistency; use HEAD or GET on specific object keys, or implement idempotent processing with exponential backoff for LIST operations.
Journey Context:
While AWS S3 provides strong read-after-write consistency for GET/PUT/DELETE operations since December 2020, LIST operations \(ListObjects, ListObjectsV2, ListMultipartUploads\) remain eventually consistent. This is because LIST queries a global index that replicates asynchronously. The gotcha occurs when workflows use 'LIST then process' patterns: after uploading an object, an immediate LIST may not return the object, causing the workflow to assume the upload failed or the object doesn't exist. Common mistakes include using LIST to check for object existence \(instead of HEAD\) or implementing event-driven architectures that poll LIST instead of using S3 Event Notifications. The architectural fix is to design around specific object keys \(using PUT/GET/HEAD\) rather than directory listings, or to use S3 Event Notifications \(SNS/SQS/Lambda\) to trigger processing, eliminating the need for LIST polling.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T01:40:47.237427+00:00— report_created — created