在更新文件时从AWS S3下载

杰森·普里贝(Jason Priebe)

这似乎是一个非常基本的问题,但是如果我正在S3中下载文件,而该文件正在由另一个进程进行更新,那么我是否需要担心获取不完整的文件?

例如:一个200MB的CSV文件。用户A开始以1Mbps的速度使用200MB的新内容更新文件。16秒后,用户B开始以200Mbps的速度下载文件。用户B是否获得了全部200MB的原始文件,还是用户B获得了约2MB的用户A的更改,仅此而已?

迈克尔-SQLbot

用户B获得全部200MB的原始文件。

原因如下:

PUTS3上的操作是原子的。从技术上讲,没有“修改”对象的事情。覆盖对象时实际发生的情况是,该对象被具有相同密钥的另一个对象替换但是原始对象实际上并没有被替换,直到新的(覆盖)对象全部上载并成功上传为止……即使如此,覆盖的对象在技术上还没有“消失”-它仅在存储桶的索引中被替换,以便将来的请求将被提供给新对象。

(实际上已记录了服务新对象并不能保证总是立即发生。与可立即下载的新对象上载相比,现有对象的覆盖最终是一致的,这意味着可能(但不太可能)上传对象后的短时间内,仍可以将旧副本提供给后续请求)。

但是,当您覆盖对象时,并且在存储桶上未启用版本控制时,尽管使用了相同的密钥,但旧对象和新对象实际上是独立存储在S3中的。现在,该存储区的索引不再引用该旧对象,因此您不再需要为存储该存储区开帐单,并且很快就会从S3的后备存储中清除该对象。实际没有记录在多久之后发生……但是(tl; dr)覆盖当前正在下载的对象不会引起任何意外的副作用。

单个密钥的更新是原子的。例如,如果将PUT放置到现有密钥上,则后续的读取可能会返回旧数据或更新后的数据,但绝不会写入损坏或部分数据。

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从AWS S3下载清单文件

来自分类Dev

从S3下载时Excel文件损坏

来自分类Dev

AWS S3下载链接问题

来自分类Dev

通过php从s3下载大文件

来自分类Dev

迭代从S3下载的JSON文件

来自分类Dev

直接从AWS S3下载时更改用户的文件名

来自分类Dev

从带有文件系统的AWS S3下载的Laravel文件已损坏

来自分类Dev

如何加快从AWS S3下载数百万个文件的速度

来自分类Dev

使用AFAmazonS3Client从Amazon S3下载的损坏的文件

来自分类Dev

使用AFAmazonS3Client从Amazon S3下载的损坏的文件

来自分类Dev

AWS EC2高Ping和S3下载慢

来自分类Dev

AWS EC2高Ping和S3下载慢

来自分类Dev

devpi替换为& 在访问镜像链接以从s3下载时

来自分类Dev

如何将从S3下载的文件对象存储到本地目录

来自分类Dev

使用bash从S3下载私有文件

来自分类Dev

在Android应用程序中从Amazon s3下载之前获取文件的大小

来自分类Dev

如何将从S3下载的文件对象存储到本地目录

来自分类Dev

如何使用传输实用程序从s3下载特定版本的文件

来自分类Dev

是否可以不通过boto3下载而获取S3文件的内容?

来自分类Dev

无法从aws s3下载图像,尽管Node js中的所有内容都正确

来自分类Dev

将tar.gz文件从S3下载/复制到EC2

来自分类Dev

S3 SDK 上传时更新单个对象而不是创建新文件

来自分类Dev

文件未下载更新文件

来自分类Dev

如何使用 boto 从 s3 下载最新更新文件

来自分类Dev

流星S3下载

来自分类Dev

Sublime Text 2/3-有人编辑时实时刷新/更新文件

来自分类Dev

使用Python 3下载XML文件

来自分类Dev

如何读取urllib3下载的.net文件?

来自分类Dev

Boto3:从S3下载文件