开启版本控制的S3桶删除文件后无法访问历史版本问题
S3版本控制中删除文件后无法通过文件名访问旧版本的问题
我的S3桶已开启版本控制,其中
File 1有两个版本:File 1. -- #version 2 File 1. -- #version 1删除
File 1后,桶内生成了删除标记,此时桶内内容为:delete marker File 1. -- #version 2 File 1. -- #version 1我原本以为删除最新版本后,仅通过文件名访问
File 1会获取到version 1,但实际未返回任何文件。
在开启版本控制的S3桶中,普通删除操作(不带版本ID)不会删除任何实际的文件版本,而是生成一个删除标记,这个删除标记会被视为该对象的「当前版本」。当你仅通过文件名访问对象时,S3默认返回当前版本,而删除标记本身不是实际文件,因此会返回无文件的结果,不会自动回退到旧版本。
要访问到version 1,或者让它成为可通过文件名直接访问的版本,可按以下方式操作:
- 方式一:显式指定版本ID访问
在请求中带上File 1的version 1对应的版本ID,直接请求该特定版本,即可获取到对应文件。 - 方式二:让version 1成为当前版本
- 找到当前删除标记的版本ID,执行带该版本ID的删除操作,删除这个删除标记,此时version 2会变回当前版本;
- 再执行带version 2版本ID的删除操作,删除version 2,此时version 1会成为新的当前版本,之后仅通过文件名访问
File 1就能获取到version 1。
- 方式三:复制旧版本生成新的当前版本
使用S3的复制操作,将version 1的内容复制到同一个File 1对象名(不带版本ID),这会生成一个新的版本(比如version 3),该版本会成为当前版本,此时访问文件名就能拿到和version 1内容一致的文件。
内容的提问来源于stack exchange,提问作者Tanu
相关产品推荐
相关产品推荐

