aws s3 如何处理覆盖文件和访问?

How does aws s3 handle overwriting a file and access?

所以我是 amazon s3 的新手,想知道是否有人可以帮助回答这个问题。

我有一组静态 API / JSON 文件,用于为移动应用程序提供支持,而 JSON 数据大部分是静态的,可以更新随时触发,导致数据更新,JSON 文件也会更新。

我的问题是,亚马逊如何处理关于访问的文件更新,我的意思是,如果有人在我想写的时候访问该文件,它会被阻止还是亚马逊员工会处理某些文件缓存以防止这种情况发生。

谢谢!

你不会被阻止,但如果对象已经存在并且最近被替换或删除,你可以获得陈旧数据。

S3 为新对象的 PUTS 提供先写后读的一致性。

S3 为覆盖 PUTS 和 DELETES 提供最终一致性。这意味着 user2 可以获得 JSON 的陈旧版本,即使 user1 替换了它(亚秒)。

您实际上无法更新 S3 中的对象。您所能做的就是存储、检索和删除整个对象。要 'update' 对象的内容,您需要替换整个对象。

如果客户端 A 上传替换对象,并且在确认上传之前,客户端 B 访问相同的对象密钥,则客户端 B 将获得原始对象。

这是来自 Amazon S3 data consistency model 的支持引用:

Updates to a single key are atomic. For example, if you make a PUT request to an existing key from one thread and perform a GET request on the same key from a second thread concurrently, you will get either the old data or the new data, but never partial or corrupt data.

截至 2020-12-13,S3 现在提供 strong consistency:

After a successful write of a new object, or an overwrite or delete of an existing object, any subsequent read request immediately receives the latest version of the object. S3 also provides strong consistency for list operations, so after a write, you can immediately perform a listing of the objects in a bucket with any changes reflected.