繁体   English   中英

AWS S3 中是否有乐观锁定?

[英]Is there optimistic locking in AWS S3?

我在 s3 中有一个 excel 文件。 由于不同的程序读写它,我需要保证它们中的每一个都写入它们读取的版本。

S3仅保证新创建对象的写入后读取一致性,以及覆盖和删除对象的最终一致性。 如果您的excel文件足够小(小于400kb),则可以将其存储在DynamoDB项的二进制属性中,并在version属性上使用条件更新,以确保该文件的写入后读取一致性。 否则,如果文件大于400kb,则可以将文件的每个版本上载到s3中的新密钥,然后在版本化的DynamoDB项目中将s3 URL跟踪到文件的最新版本。

对于S3,这是不可能的。

具体来说,无法确定性和权威性地确定您是否可以看到当前版本是否正在被覆盖,或者是否已经被最近覆盖...因为正在进行的覆盖操作不会干扰当前版本由于最终会采用覆盖一致性模型,因此该操作已完成或不久后才完成。

当未启用存储桶版本控制时,甚至是这样。 有时可能会覆盖一个对象,并在覆盖完成后的短暂时间内仍然下载以前的版本。

GETHEAD以及ListObjects最终都是一致的。

2020年开始AWS强一致,可以使用标准的HTTP header If-Match实现乐观锁。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM