我阅读了很多关于如何过期(删除)亚马逊 S3 对象并尝试设置生命周期规则来做到这一点,但是对象没有被删除,想知道我做错了什么。
我在 S3 上有这样组织的对象:
Amazon S3 > my-test-bucket > my-test-org > a.csv,
b.xml,
c.xsl...
Run Code Online (Sandbox Code Playgroud)
如果它们是 365 天,我需要删除 my-test-bucket 中的所有文件。那里有很多文件已经超过 2 年了,所以按照这个规则,这些文件应该被删除。
在生命周期规则中,我指定添加过滤器来限制范围 my-test-bucket,在“到期”部分,我选择了“当前版本”和“以前版本”,
my-test-bucket 未启用版本控制。
完成所有这些后,我一直在等待和等待,但什么也没发生。那些旧文件还在。我的问题是:
谢谢
“该规则适用于前缀‘my-test-bucket’”
这是你的错误。前缀是指对象键前缀。这不包括存储桶名称。
你想要的前缀是my-test-org/
. 尾部斜杠很重要,因为没有它,您的规则也会匹配其他键前缀,例如my-test-organization
和my-test-organism
,这可能会导致意外匹配。
请记住,S3 中并没有真正的文件夹。对象键是字符串,由 分隔/
以表示文件夹层次结构,但文件夹并不是真正的容器。出现在文件夹“bar”中的文件“foo.txt”实际上具有“bar/foo.txt”的对象键。
前缀匹配,在伪代码中,是
if(left(object_key, len(prefix)) == prefix) { # rule matches
Run Code Online (Sandbox Code Playgroud)
更改规则以使用此前缀my-test-org/
,如果超过 365 天,则将删除所有以 开头的键的对象。这当然包括所有子目录。
规则测试似乎在 UTC 午夜左右开始,实际清除在此之后的一段时间开始。
归档时间: |
|
查看次数: |
2420 次 |
最近记录: |