Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services S3存储桶中新对象put的读写一致性警告_Amazon Web Services_Amazon S3 - Fatal编程技术网

Amazon web services S3存储桶中新对象put的读写一致性警告

Amazon web services S3存储桶中新对象put的读写一致性警告,amazon-web-services,amazon-s3,Amazon Web Services,Amazon S3,发件人: AmazonS3在所有区域为S3存储桶中的新对象提供了读写一致性,但有一点需要注意。需要注意的是,如果您在创建对象之前对密钥名发出HEAD或GET请求(以查找对象是否存在),AmazonS3将为写后读提供最终的一致性 我不确定我是否正确理解了警告在创建对象之前:好的,我还没有创建带有K键的对象,因此不存在带有K键的对象;我向K提出一个GET请求根据上面的解释,我的请求会产生什么结果 我很困惑,因为解释说明了写后读的最终一致性。但是到目前为止还没有写操作。当您有一个文件要上传,但该文件可

发件人:

AmazonS3在所有区域为S3存储桶中的新对象提供了读写一致性,但有一点需要注意。需要注意的是,如果您在创建对象之前对密钥名发出HEAD或GET请求(以查找对象是否存在),AmazonS3将为写后读提供最终的一致性

我不确定我是否正确理解了警告
在创建对象之前
:好的,我还没有创建带有K键的对象,因此不存在带有K键的对象;我向K提出一个GET请求根据上面的解释,我的请求会产生什么结果


我很困惑,因为解释说明了写后读的最终一致性。但是到目前为止还没有写操作。

当您有一个文件要上传,但该文件可能已经存在时,就会出现这种情况。因此,您可以执行以下操作,而不是覆盖现有文件:

  • 尝试获取文件。它不存在,所以你得到一个404,没有这样的键
  • 把文件放好
  • 尝试在之后立即获取该文件(无论出于何种原因)

  • 在此顺序中,步骤#3可能返回文件,也可能不返回文件。最终您可以检索该文件,但从上传开始需要多长时间取决于S3的内部结构(我可以推测为什么会发生这种情况,但这只是猜测)。

    更新2020-12-02整个讨论现在已经过时

    更新在阅读了中的一条评论后,我重写了答案

    我相信这个警告是在谈论这种情况

    client 1: GET key_a  -->  this could return an object even this request was sent earlier.
    client 2: PUT key_a
    

    如果
    client 1
    的请求晚于
    PUT
    请求到达一个节点,则这是可能的。

    要扩展OP的评论“到目前为止还没有写入”,必须有,从某种意义上说:存在对内部缓存或索引副本的写入,以指示已请求不存在的对象,从而在S3中创建一个内部指示,将对象的存在从“对象存在未知”更改为“对象不存在已确认”,这是一个可以在内部“记住”的事实在一段时间内(通常很短,但不能保证为0),在处理对象的后续请求时使用此内部指示。感谢您的回答,但我认为您所写的内容不正确。他们说他们为新对象的put提供了读写一致性。请检查我的答案。