我正在阅读和写入S3的大量文件。 我只是想知道我是否需要编码文件是"半写"例如S3 PUT /只写"一半"工作
或是写入S3全有或全无?
我知道有一个读写的最终一致性问题(我认为)在很大程度上是一个单独的问题。
答案 0 :(得分:15)
对于除美国标准(us-east-1)之外的所有区域,您将获得写后一致性。这意味着如果您为PUT获得HTTP 200 OK,则可以立即读取该对象。
如果您的请求被中间删除,您将无法获得HTTP 200,并且根本不会写入您的对象。
更新:所有地区现在都支持读写后一致性(感谢@ jeff-loughridge): https://aws.amazon.com/about-aws/whats-new/2015/08/amazon-s3-introduces-new-usability-enhancements/
答案 1 :(得分:8)
Amazon S3从不添加部分对象;如果您收到成功响应,Amazon S3会将整个对象添加到存储桶中。
答案 2 :(得分:0)
来自docs:
<块引用>对单个键的更新是原子的。例如,如果您从一个线程 PUT 到现有的键并同时从第二个线程对同一个键执行 GET,您将获得旧数据或新数据,但不会获得部分或损坏的数据。
这个答案与现有答案有些相似,但它强调这样一个事实,即不仅没有留下部分写入对象的风险,而且读者将永远冒着看到(阅读)部分书写对象的风险。