如何指定与目录不匹配的对象到期前缀?

时间:2012-02-23 22:17:50

标签: amazon-s3

我有一个带有imgmovtmp目录的S3存储桶。我希望添加到tmp的所有内容一旦超过三天就会被自动删除。所以我在我的桶上设置了object expiration规则,如下:

  • 前缀:“tmp /”
  • 到期时间:3

问题是,虽然tmp中的文件按计划被删除,但tmp本身也匹配此前缀(显示尾随斜杠)并且每三天删除一次。

是否有任何前缀与tmp的内容相匹配,而不是tmp本身的内容?像“tmp / *”之类的东西(虽然这不起作用)?

2 个答案:

答案 0 :(得分:6)

为什么要保留tmp

Amazon S3实际上没有文件夹/目录的原生概念,而是仅由桶和对象/键组成的平面存储架构 - 在S3的大多数工具中看到的目录样式表示(包括{ {3}}本身完全基于约定,即模拟具有相同前缀的对象的层次结构(例如,在您的情况下为tmp/);请参阅相应的常见问题AWS Management Console

  

Amazon S3是一个简单的基于密钥的对象存储。当您存储数据时,您   分配一个唯一的对象密钥,以后可以用来检索   数据。键可以是任何字符串,可以构造为模仿   分层属性。

     

[强调我的]

此架构在How is Amazon S3 data organized?

中进一步详细说明
  

<强>吊桶

     

存储桶是存储在Amazon S3中的对象的容器。每个对象   包含在一个桶里。例如,如果对象已命名   photos / puppy.jpg 存储在johnsmith存储桶中,然后存储   使用URL可寻址   Amazon S3 Concepts

     

[...]

     

<强>键

     

键是存储桶中对象的唯一标识符。每个   存储桶中的对象只有一个键。因为结合了   存储桶,密钥和版本ID唯一标识每个对象 Amazon S3   可以被认为是“桶+密钥+版本”之间的基本数据图   和对象本身。

     

[强调我的]

因此,根本不需要关心这些“目录”,只要您碰巧在其名称中存储具有相应前缀的对象,它们就会重新出现。

答案 1 :(得分:-1)

似乎可以通过IAM实现这一点:您创建的IAM用户只能删除tmp中的文件(而不是tmp / self),然后使用该用户在存储桶中放置生命周期。然后不会删除tmp /对象。

但是文档在这方面并不是很清楚 - 你必须对它进行测试。