我使用s3进行存储,它包含包含多个子文件夹的存储桶
例如:
mybucket /根
mybucket /根/ SUB1
mybucket /根/ SUB2
mybucket /根/ SUB2 / SUB3 / SUB4 / SUB5
每个文件夹都可以包含s3对象,但我想只通过sqs通知以前缀&#34开头的文件; p"
我已设置前缀" p *",但现在它会过滤所有文件。
是否应为所有目标的所有前缀设置? 我可以只为对象设置它,忽略目录前缀? 即仅为文件添加前缀?
感谢。
答案 0 :(得分:1)
在S3中,在一个存储桶中,命名空间实际上是平的。对象键中出现的/
用于模拟文件夹结构,但结构实际上并不存在,S3在大多数情况下将对象键视为单个字符串,而不是路径+文件名。
事件过滤规则是使用整个对象键的情况,因此只能通过整个键的前缀或后缀指定匹配 - 路径+文件名
如果您有多个"目录"在桶的根部,例如foo/
和bar/
并且您希望找到/
分隔符后面的下一个字符为p
的对象,那么您需要一个与前缀foo/p
匹配的规则bar/p
。这些是前缀,而不是模式,所以最后你不会使用*
。您也不会在开头放置/
,因为在S3中,对象键实际上并不以/
开头(某些SDK可能会通过允许对象键隐藏此事实包括或省略前导斜杠。)