【发布时间】:2016-01-16 19:12:37
【问题描述】:
我的s3结构如下:
s3bucketname -> 一级密钥列表 -> 二级密钥列表 -> 三级密钥列表 -> 实际文件。
我需要做的是,给定 s3bucket 的名称以及第一级键和第三级的条目,我需要符合此条件的所有文件的路径,即某种通配符用于第二级键
谁能指出如何在java中做到这一点?
谢谢
【问题讨论】:
我的s3结构如下:
s3bucketname -> 一级密钥列表 -> 二级密钥列表 -> 三级密钥列表 -> 实际文件。
我需要做的是,给定 s3bucket 的名称以及第一级键和第三级的条目,我需要符合此条件的所有文件的路径,即某种通配符用于第二级键
谁能指出如何在java中做到这一点?
谢谢
【问题讨论】:
假设您的存储桶中有这样的层次结构:
"foo/bar/baz/sample1.txt"
"foo/bar/bash/sample2.txt"
"foo/bar/bang/sample3.txt"
"foo/boo/baz/sample4.txt"
"foo/boo/bash/sample6.txt"
"foo/boo/sample5.txt"
你知道第一个键是“foo”,第三个键是“baz”,你可以调用 listObjects() api,前缀值为“foo/”,分隔符值为“/”,这将为您提供一个 ObjectListing,其中包含公共前缀列表中的两个条目,即“foo/bar/”和“foo/boo/”。然后,您可以将已知的第三个键“bash”附加到每个字符串,并再次使用 listObjects() api 获取所有对象。
【讨论】:
坦率地说,最简单的方法是获取所有具有已知前缀的对象的列表。然后,让您的代码查看返回的键以确定您想要的键。这将减少对 AWS 的调用。
【讨论】: