Amazon s3 如何指定不使用';与目录不匹配?

Amazon s3 如何指定不使用';与目录不匹配?,amazon-s3,Amazon S3,我有一个带有img、mov和tmp目录的S3存储桶。我希望添加到tmp的所有内容在超过三天后自动删除。所以我在我的桶上设置了如下规则: 前缀:“tmp/” 有效期:3 问题是,当tmp中的文件按计划删除时,tmp本身也会匹配此前缀(显示尾部斜杠),并每隔三天删除一次 是否有任何前缀与tmp的内容匹配,但与tmp本身不匹配?类似于“tmp/*”(虽然这不起作用)为什么要保留tmp 实际上没有文件夹/目录的原生概念,而是一个仅由bucket和对象/键组成的平面存储体系结构-大多数S3工具(包括本

我有一个带有
img
mov
tmp
目录的S3存储桶。我希望添加到
tmp
的所有内容在超过三天后自动删除。所以我在我的桶上设置了如下规则:

  • 前缀:“tmp/”
  • 有效期:3
问题是,当
tmp
中的文件按计划删除时,
tmp
本身也会匹配此前缀(显示尾部斜杠),并每隔三天删除一次


是否有任何前缀与
tmp
的内容匹配,但与
tmp
本身不匹配?类似于“tmp/*”(虽然这不起作用)

为什么要保留
tmp

实际上没有文件夹/目录的原生概念,而是一个仅由bucket和对象/键组成的平面存储体系结构-大多数S3工具(包括本身)中的目录样式表示完全基于约定,即模拟具有相同前缀的对象的层次结构(例如,您的案例中的
tmp/
);请参阅相应的常见问题解答:

AmazonS3是一个简单的基于键的对象存储 指定一个唯一的对象键,该键稍后可用于检索 键可以是任何字符串,可以构造为模拟 层次属性。

[我的重点]

该体系结构将在以下章节中进一步详细介绍:

bucket是存储在AmazonS3中的对象的容器 包含在bucket中。例如,如果对象命名为 photos/puppy.jpg存储在约翰史密斯桶中,然后 可使用URL寻址

[……]

密钥是bucket中对象的唯一标识符。每个 bucket中的对象只有一个键,因为 bucket、key和version ID唯一标识每个对象,amazons3 可以看作是“bucket+key+version”之间的基本数据映射 以及对象本身

[我的重点]


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

似乎IAM应该可以做到这一点:您创建的IAM用户只能删除tmp中的文件(而不能删除tmp/本身)然后使用该用户在bucket上放置一个生命周期,那么tmp/对象将不会被删除


但是文档对此不是很清楚-你必须测试它。

我从你的回答中假设我想要的是不可能的?对吗?至于我想要它的原因,因为使用它的人不是通过API与它交互的。他们是通过传输和管理控制台进行交互的。我更容易告诉他们“将要过期的文件放在
tmp
目录中”,而不是说“首先,如果
tmp
目录不存在,请创建该目录。”"@jemmons:我明白了,这是一个可以理解的用例——不幸的是,这确实不可能是开箱即用的。一个可能的解决方法可能是通过适当的解决方案来保护
tmp
对象不被删除,即A或an;我现在不确定是否可以像这样控制/否决对象过期。这是基于对密钥工作原理的误解,如果您创建
tmp/file.txt
,则没有此类对象
tmp
,因此无需删除也无需保护。