gpt4 book ai didi

ruby - 亚马逊AWS : How to replicate tree/branch functionality from AWS Ruby SDK v1 in AWS Ruby SDK v2?

转载 作者:数据小太阳 更新时间:2023-10-29 07:52:28 24 4
gpt4 key购买 nike

在他们的 SDK 版本 1 中,Amazon 提供了一些非常有用的方法,可用于使用 Tree、ChildCollection、LeafNode、BranchNode 等探索存储桶的内容。不幸的是,我很难复制它们的功能SDK 的版本 2,它似乎不包含此类方法。理想情况下,我想做类似于以下示例的操作,该示例取自 the v1 SDK .

tree = bucket.as_tree

directories = tree.children.select(&:branch?).collect(&:prefix)
#=> ['photos', 'videos']

files = tree.children.select(&:leaf?).collect(&:key)
#=> ['README.txt']

关于如何实现这一点有什么想法吗?

最佳答案

树和分支功能通过使用前缀和分隔符列出存储桶中的对象来工作。前缀指定当前“文件夹”,分隔符应为“/”以防止返回嵌套键。

例如,要列出存储桶的“photos/family/”文件夹中的所有"file"和“文件夹”:

s3 = Aws::S3::Client.new
resp = s3.list_objects(bucket:'bucket-name', prefix:'photos/family/', delimiter:'/')

# the list of "files"
resp.contents.map(&:key)
#=> ['photos/family/summer_vacation.jpg', 'photos/family/parents.jpg']

# the list of "folders"
resp.common_prefixes
#=> ['photos/family/portraits/', 'photos/family/disney_land/']

内容是响应中的文件或叶节点。 common_prefixes 是目录。如果您想继续向下查看“photos/family/portraits/”中的文件和文件夹,则只需再次使用不同的前缀#list_objects:

resp = s3.list_objects(bucket:'bucket-name', prefix:'photos/family/portraits/', delimiter:'/')

关于ruby - 亚马逊AWS : How to replicate tree/branch functionality from AWS Ruby SDK v1 in AWS Ruby SDK v2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29284946/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com