新对象的 Amazon S3 一致性模型

Amazon S3 consistency model for new objects

正在查看 https://docs.aws.amazon.com/AmazonS3/latest/dev/Introduction.html

Amazon S3 provides read-after-write consistency for PUTS of new objects in your S3 bucket in all regions with one caveat. The caveat is that if you make a HEAD or GET request to the key name (to find if the object exists) before creating the object, Amazon S3 provides eventual consistency for read-after-write.

我的理解是,如果我创建了一个新对象并且我没有事先检查它是否存在,它应该立即可用(例如,显示在列表请求中)。

但是上面link也说

...you might observe the following behaviors:

  • A process writes a new object to Amazon S3 and immediately lists keys within its bucket. Until the change is fully propagated, the object might not appear in the list.

这与第一个陈述相矛盾,因为它基本上说 PUTS 的写后读一致性总是最终的。

我读作:

  • Amazon 保证 ReadObject 请求(GET 和 HEAD)对于任何新的 PUT 对象都会成功(写后读一致性),假设您没有'之前请求对象

  • Amazon 不保证 ListBucket 请求对于任何新 PUT 对象立即 是一致的,但是相反,新对象最终会出现在 ListBucket 请求中(最终一致性)

S3 现在是高度一致的,所有 S3 GET、PUT 和 LIST 操作,以及更改对象标签、ACL 或元数据的操作现在都是高度一致的。所写即所读,LIST 的结果将准确反映存储桶中的内容。这适用于所有现有和新的 S3 对象,适用于所有区域,并且免费提供给您!对性能没有影响,如果你愿意,你可以每秒更新数百次对象,并且没有全局依赖性。

https://aws.amazon.com/blogs/aws/amazon-s3-update-strong-read-after-write-consistency/