S3最后修改的时间戳,用于最终一致的重写PUT

and*_*asp 6 amazon-s3 eventual-consistency amazon-web-services

AWS S3文档声明:

Amazon S3提供了在所有区域覆盖PUTS和DELETES的最终一致性.

http://docs.aws.amazon.com/AmazonS3/latest/dev/Introduction.html#ConsistencyModel

到达完全一致性的时间跨度可以变化.在此期间,GET请求可以返回先前的对象或udpated对象.

我的问题是:

最后修改的时间戳何时更新?是否在覆盖PUT成功之后但达到完全一致性之前立即更新,还是仅在达到完全一致性后才更新?

我怀疑前者,但我找不到任何明确说明这一点的文件.

Mic*_*bot 9

Last-Modified时间戳应与Date从成功的响应头返回值PUT的要求。

据我所知,这没有明确记录,但可以从记录的内容中得出。

当您覆盖一个对象时,最终一致性模型可能会延迟覆盖的内容本身,而不是覆盖本身,而是给定 S3 节点(S3 被复制到 S3 区域内的多个节点)上被覆盖内容的可用性

Last-Modified时间戳,像元数据的其余部分,是在对象的创建和不可变的时间建立的,之后。

事实上,它根本不是对象的“修改”时间,而是对象的创建时间。这种解释可能听起来很迂腐,但从最严格的意义上讲,它是准确的:S3 对象及其元数据实际上根本无法修改,只能被覆盖。当您在 S3 中“覆盖”一个对象时,您实际上是在创建一个新对象,重用旧对象的键(路径+文件名)。这个新对象在给定 S3 节点(复制)的可用性可能会被最终一致性模型延迟......而不是实际创建的新对象覆盖旧对象......因此没有理由Last-Modified受复制延迟的影响(假设有 复制延迟——最终一致性有时与直接一致性无法区分)。