AWS S3 API 允许您在桶使用aws s3api put-bucket-versioning
命令。写入该存储桶的未来对象会被版本控制,但现有对象则不会。
但有没有一种快速的方法可以对单个用户启用版本控制,预先存在的对象在那个 bucket 里?似乎唯一简单的解决方案就是复制每个对象,删除原始对象,然后根据原始键重新复制副本,这看起来效率极低。
我注意到有一个这里有类似的问题从 4 年前开始就没有解决方案。不幸的是,与该问题的作者不同,我的存储桶中有大约 1.3 PB 的数据,复制两次的简单解决方案可能需要一段时间。
答案1
我的理解是,一旦您在存储桶上启用版本控制,所有版本都将在未来保留。您无法追溯上传较旧的对象。
您可能说得对,如果您想要现有对象的版本,则必须先用旧对象覆盖它们,然后再用新对象覆盖它们。是的,这样做效率低下,但这也是一种极其罕见的要求,因此我并不惊讶 S3 无法满足这一要求。
我曾经遇到过这种情况:我们的存储桶中的对象归服务提供商所有,而我们需要拥有它们。我必须获得对象的读取权限,然后以所有者的身份复制对象。至少我记得我做过这件事,那是很久以前的事了。