La documentación de Amazon ( http://docs.aws.amazon.com/AmazonS3/latest/dev/Introduction.html#ConsistencyModel ) establece:
"Amazon S3 proporciona consistencia de lectura después de escritura para PUTS de nuevos objetos en su depósito S3 en todas las regiones con una advertencia".
Ignorando la advertencia, esto significa que se garantiza que un cliente que emite un GET después de un PUT para un nuevo objeto obtendrá el resultado correcto. Mi pregunta es, ¿también se aplicaría la garantía si el GET se emite desde un cliente diferente al que hizo el PUT (suponiendo, por supuesto, que el GET sigue al PUT cronológicamente)? En otras palabras, ¿la consistencia de lectura después de escritura es simplemente consistencia de lectura-su-escritura o funciona para todos los clientes?
Sospecho que la respuesta es que funciona globalmente pero no puedo encontrar una respuesta definitiva.
Sí, sería coherente.
El concepto de 'cliente' es irrelevante porque cada llamada a la API es independiente.
La región us-east-1 (anteriormente conocida como US-Standard ) anteriormente no tenía coherencia de lectura después de escritura, pero ahora se proporciona en todas las regiones .
Siempre he asumido lo mismo, es decir, que la lectura después de la escritura se aplica a todos los clientes, no solo al cliente que realizó la escritura.
Esta publicación de blog parece confirmarlo (por lo que vale), pero tampoco encontré ninguna respuesta definitiva en los documentos oficiales de AWS:
https://shlomoswidler.com/2009/12/lectura-después-de-escritura-consistencia-en-amazon.html
¿Qué es la coherencia de lectura tras escritura?
La consistencia de lectura tras escritura hace más estrictas las cosas, lo que garantiza una visibilidad inmediata de los datos nuevos para todos los clientes. Con consistencia de lectura después de escritura, un objeto, archivo o fila de tabla recién creado será visible de inmediato, sin demoras.
A partir del 1 de diciembre de 2020 ( https://aws.amazon.com/blogs/aws/amazon-s3-update-strong-read-after-write-consistency/ ), S3 proporciona una sólida coherencia de lectura después de escritura. Sin embargo, todavía no está claro que GET de un cliente diferente (que no sea el cliente que envió la solicitud PUT) verá el resultado actualizado. El blog menciona: "Lo que escribes es lo que leerás, y los resultados de una LISTA serán un reflejo preciso de lo que hay en el balde".
También en la literatura de sistemas distribuidos existe un modelo de consistencia de 'lectura propia-escritura' y una 'lectura consistente entre clientes después de la escritura' es el objetivo final (no digo que sea imposible).
Sospecho que S3 eventualmente es consistente para lecturas de diferentes clientes. Debería haber más claridad de AWS sobre este punto, creo.