亚马逊 S3 对象过期

3
我看到很多关于如何过期(删除)Amazon S3对象的文章,并尝试设置生命周期规则来执行此操作,但是对象并没有被删除,想知道我错在了哪里。
我的S3对象组织如下:
Amazon S3 > my-test-bucket > my-test-org > a.csv, 
                                           b.xml, 
                                           c.xsl...

如果这些文件已经存在365天,我需要删除my-test-bucket中的所有文件。由于有很多超过2年的文件,所以按照此规则应该将这些文件删除。

在生命周期规则中,我指定了添加过滤器以限制范围为my-test-bucket,并在“过期”部分选择了“当前版本”和“以前版本”,

  • 从对象创建后的365天内到期当前版本
  • 从成为以前版本后的365天永久删除以前的版本
  • 该规则适用于前缀'my-test-bucket'

my-test-bucket未启用版本控制。

完成所有这些之后,我一直等待,但什么也没有发生。那些旧文件仍然存在。我的问题是:

  1. 自动到期时间是什么时候?每天午夜还是其他时间?
  2. 是否有按钮可以立即使其过期并删除对象?
  3. 在我的情况下,我有文件在my-test-org下而不是直接在my-test-bucket下,这个规则仍然有效吗?我是否必须在规则中应用通配符以确保它检查所有组织文件夹中的所有文件?

谢谢

1个回答

5

"该规则适用于前缀'my-test-bucket'"

这是您的错误。前缀指的是对象键前缀,不包括存储桶名称。

您需要的前缀是my-test-org/。末尾的斜杠很重要,因为如果没有它,您的规则也会匹配其他键前缀,比如my-test-organizationmy-test-organism,这可能导致意外的匹配。

请记住,在S3中并没有真正的文件夹。对象键是字符串,由/分隔以表示文件夹层次结构,但这些文件夹实际上并不是容器。在名为"bar"的文件夹中出现的名为"foo.txt"的文件实际上具有对象键"bar/foo.txt"。

前缀匹配的伪代码如下:

if(left(object_key, len(prefix)) == prefix) { # rule matches

更改规则以使用此前缀,如果超过365天,则将删除以my-test-org/开头的每个对象。 当然,这包括所有子目录。
规则测试似乎开始于UTC午夜左右,实际清除在此之后一段时间开始。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接