【问题标题】:Amazon S3 object expirationAmazon S3 对象到期
【发布时间】:2018-10-14 08:18:58
【问题描述】:

我读了很多关于如何使亚马逊 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 下有文件,这条规则仍然有效吗?我是否必须在规则中应用通配符以确保它检查所有 org 文件夹中的所有文件?

谢谢

【问题讨论】:

    标签: amazon-s3


    【解决方案1】:

    “规则适用于前缀'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
    

    更改规则以使用此前缀,如果键以 my-test-org/ 开头的每个对象都将被删除,如果超过 365 天。当然,这包括所有子目录。

    规则测试似乎在 UTC 午夜左右开始,实际清除在此之后的某个时间开始。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-17
      • 1970-01-01
      • 2018-11-04
      • 2015-09-24
      • 2013-05-29
      • 1970-01-01
      相关资源
      最近更新 更多