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

jem*_*ons 5 amazon-s3

我有一个S3桶img,movtmp目录.我希望所有添加tmp的内容在超过三天后自动删除.所以我在我的桶上设置了对象过期规则,如下所示:

  • 前缀:"tmp /"
  • 到期时间:3

问题是,虽然内部文件tmp按计划删除,但tmp它本身也匹配此前缀(显示尾部斜杠)并每三天删除一次.

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

Ste*_*pel 6

你为什么要保留tmp

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

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

[强调我的]

Amazon S3 Concepts中进一步详细介绍了此体系结构:

水桶

存储桶是存储在Amazon S3中的对象的容器.每个对象都包含在一个桶中.例如,如果名为photos/puppy.jpg的对象存储在johnsmith存储桶中,则可使用URL http://johnsmith.s3.amazonaws.com/photos/puppy.jpg对其进行寻址.

[...]

按键

密钥是存储桶中对象的唯一标识符.存储桶中的每个对象只有一个密钥.由于存储桶,密钥和版本ID的组合唯一标识每个对象,因此可以将Amazon S3视为 "存储桶+密钥+版本"与对象本身之间的基本数据映射.

[强调我的]

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