我有一个带有img
,mov
和tmp
目录的S3存储桶。我希望添加到tmp
的所有内容一旦超过三天就会被自动删除。所以我在我的桶上设置了object expiration规则,如下:
问题是,虽然tmp
中的文件按计划被删除,但tmp
本身也匹配此前缀(显示尾随斜杠)并且每三天删除一次。
是否有任何前缀与tmp
的内容相匹配,而不是tmp
本身的内容?像“tmp / *”之类的东西(虽然这不起作用)?
答案 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 /对象。
但是文档在这方面并不是很清楚 - 你必须对它进行测试。