Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 如何从包含多个子文件夹的bucket中筛选每个对象前缀的s3通知_Amazon S3 - Fatal编程技术网

Amazon s3 如何从包含多个子文件夹的bucket中筛选每个对象前缀的s3通知

Amazon s3 如何从包含多个子文件夹的bucket中筛选每个对象前缀的s3通知,amazon-s3,Amazon S3,我使用s3存储,它包含一个包含多个子文件夹的bucket 例如: 我的桶/根 mybucket/root/sub1 mybucket/root/sub2 mybucket/root/sub2/sub3/sub4/sub5 每个文件夹都可以包含s3对象,但我只想将以前缀“p”开头的文件通知到sqs中 我已经设置了前缀“p*”,但现在它可以过滤所有文件 是否应为所有目录的所有前缀设置该值? 我可以将其设置为仅对象的,忽略目录前缀吗? i、 e前缀仅用于文件 谢谢。在S3中,在一个bucket中,名称

我使用s3存储,它包含一个包含多个子文件夹的bucket

例如:

我的桶/根

mybucket/root/sub1

mybucket/root/sub2

mybucket/root/sub2/sub3/sub4/sub5

每个文件夹都可以包含s3对象,但我只想将以前缀“p”开头的文件通知到sqs中

我已经设置了前缀“p*”,但现在它可以过滤所有文件

是否应为所有目录的所有前缀设置该值? 我可以将其设置为仅对象的,忽略目录前缀吗? i、 e前缀仅用于文件


谢谢。

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

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

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