为什么在 AWS S3 中删除对象比创建对象慢得多?

Why is it so much slower to delete objects in AWS S3 than it is to create them?

我有一个监视 S3 存储桶的 AWS lambda 函数。当图像上传到存储桶时,lambda 函数会创建图像的缩略图。但是我在函数中犯了一个错误,将 t运行sformed 文件保存在正在监视的同一目录中,创建了一个无限循环。

它 运行 大约一分钟后我停止了它,在那段时间里创建了 600,000 张图像。但是,删除这些图像(使用 AWS 控制台)大约需要 20 分钟。

为什么会有这样的差异?我对此的低级原因很感兴趣。

Amazon S3 buckets in all Regions provide read-after-write consistency for PUTS of new objects and eventual consistency for overwrite PUTS and DELETES.

按照上面的说法,在对象的创建和删除性能上应该是相反的。

然而,我认为主要原因是使用 AWS Web 控制台,其中 "delete" 操作可能需要更多时间让 Web 控制台反映出来。相比之下,如果你运行使用AWS CLI进行删除操作,应该是相反的。

根据此文档 https://docs.aws.amazon.com/AmazonS3/latest/dev/delete-or-empty-bucket.html 删除是 "insertion of a deletion marker"。因此,它可以解释为什么与仅提供最终一致性的上传相比,删除如此缓慢。