首页 > 解决方案 > 当 Amazon S3 删除正在进行并且上传尝试覆盖同一存储桶中的同一对象时会发生什么

问题描述

我们有一个 CICD 管道,它可以删除同一个文件,然后上传到 S3。我们首先删除目录中的所有文件,然后上传文件,因为如果我们只执行会进行覆盖的上传文件,则目录中可能会留下不需要的文件,需要将其删除。如果正在进行 S3 删除,同时请求上传以覆盖它,会发生什么情况?这个文件最终会被删除还是被覆盖的文件留下?

标签: amazon-s3

解决方案


请检查Amazon S3 数据一致性模型,它说它在 PUTS 新对象后提供写后读一致性。以及 OVERWRITE PUTS 和 DELETES 的最终一致性。

Amazon S3 当前不支持对象锁定。如果同时对同一个键发出两个 PUT 请求,则具有最新时间戳的请求获胜。如果这是一个问题,您将需要在应用程序中构建对象锁定机制。

因此,在您的情况下,您可能会遇到这种不希望的情况,您的对象最终被删除:如果新的 PUT 在 DELETE 执行之前通过,那么它将被视为 UPDATE 而不是全新的 put。在这种情况下,DELETE 可能会在第二个 PUT 之后执行,导致根本没有可用的对象。


推荐阅读