我在 AWS S3 Object Versioning 上阅读的所有信息都特别提到了这一点:
在您设置版本控制状态之前存储在您的存储桶中的对象的版本 ID 为 null。当您启用版本控制时,您的存储桶中的现有对象不会更改。变化的是 Amazon S3 处理未来请求中的对象的方式。本节中的主题介绍了启用版本控制的存储桶中的各种对象操作。
我目前在一个存储桶中有大约 2 TB(370K 个对象)的数据。我的理解是,如果我现在打开版本控制,那么未来的对象将被版本控制。我的问题:现有的对象呢?我是在没有它们未版本化的情况下陷入困境,还是有办法在不下载/重新上传它们的情况下对其进行版本化?我在做 Google Fu 时没有找到任何信息,所以想在这里 ping 集体。
谢谢。
对不起,伙计,但你被困住了。
必须启用版本控制才能访问以前的版本。
在禁用 版本控制或暂停版本控制的情况下,您无法检索任何类型的变更日志。该文件被简单地覆盖。
从未启用版本控制遵循相同的策略。但看起来更像这样:
(来源:amazon.com)
具有版本 ID 的对象将
null
继续被覆盖。如果 AWS 默认设置了版本控制,它们可能会用完空间。更新:当您启用它时,存储桶中已有的项目将立即开始版本控制。
当您在存储桶上启用版本控制时,不会为现有对象提供版本 ID。相反,它们的版本 ID 为
null
. 任何以前的版本都不会“自动恢复”。除此之外,现有对象将在未来正常进行版本控制。
在存储桶中添加或更改的新对象将被赋予唯一的版本 ID。
启用版本控制后,如果您列出对象的所有版本,您会注意到最后一个(最旧的)版本的版本 ID 为
null
,如果该原始版本在启用版本控制之前存在。当您在现有 S3 存储桶上启用版本控制时,版本控制确实对现有对象“起作用”(取决于您的期望!)。
如果您删除旧对象,它只会使用删除标记。您可以通过以通常方式删除删除标记来恢复该旧对象。这是我删除后看到的内容: