如何从包含多个子文件夹的存储桶中过滤每个对象前缀的s3通知

时间:2017-09-10 08:14:07

标签: amazon-s3

我使用s3进行存储,它包含包含多个子文件夹的存储桶

例如:

mybucket /根

mybucket /根/ SUB1

mybucket /根/ SUB2

mybucket /根/ SUB2 / SUB3 / SUB4 / SUB5

每个文件夹都可以包含s3对象,但我想只通过sqs通知以前缀&#34开头的文件; p"

我已设置前缀" p *",但现在它会过滤所有文件。

是否应为所有目标的所有前缀设置? 我可以只为对象设置它,忽略目录前缀? 即仅为文件添加前缀?

感谢。

1 个答案:

答案 0 :(得分:1)

在S3中,在一个存储桶中,命名空间实际上是平的。对象键中出现的/用于模拟文件夹结构,但结构实际上并不存在,S3在大多数情况下将对象键视为单个字符串,而不是路径+文件名。

事件过滤规则是使用整个对象键的情况,因此只能通过整个键的前缀或后缀指定匹配 - 路径+文件名

如果您有多个"目录"在桶的根部,例如foo/bar/并且您希望找到/分隔符后面的下一个字符为p的对象,那么您需要一个与前缀foo/p匹配的规则bar/p。这些是前缀,而不是模式,所以最后你不会使用*。您也不会在开头放置/,因为在S3中,对象键实际上并不以/开头(某些SDK可能会通过允许对象键隐藏此事实包括或省略前导斜杠。)