您如何阅读S3作为Ruby中的分层目录结构?

chu*_*boy 6 ruby amazon-s3

有没有人有成功阅读S3桶作为子文件夹?

文件夹1

- 子文件夹2

---- file3

---- file4

- file1

- file2

文件夹2

- 子文件夹3

- file5

- file6

我的任务是读取folder1.我希望看到subfolder2,file1和file2,但不是file3或file4.现在,因为我将存储桶键限制为prefix =>'folder1 /',所以你仍然得到file3和4,因为它们在技术上具有folder1前缀.

看来真正做到这一点的唯一方法就是吸取folder1下的所有键,然后使用字符串搜索实际排除结果数组中的file3和file4.

有没有人有这方面的经验?我知道像TRANS和Cyber​​duck这样的FTP风格的S3客户端必须这样做但是从S3 API本身并不明显.

谢谢你,康拉德

我查看了AWS :: S3和right_aws.

cor*_*ard 6

S3 API没有文件夹的概念.但是,它允许文件名中包含"/",并允许您使用前缀进行查询.你似乎已经熟悉了,但只是想清楚.

当您使用前缀查询时folder1/,S3将返回该"文件夹"下的所有内容.为了只操纵直接后代,你将不得不在Ruby中自己过滤结果(选择你的毒药:rejectselect).这不会有助于提高性能(在S3中使用"文件夹"的常见原因),但它可以完成工作.