gpt4 book ai didi

amazon-web-services - AWS CLI S3API在路径中找到最新文件夹

转载 作者:行者123 更新时间:2023-12-03 16:00:48 25 4
gpt4 key购买 nike

我有一个非常大的存储桶(成千上万个对象)。我有一个路径(说s3://myBucket/path1/path2)。/path2获取也是文件夹的上载。因此,一个示例可能看起来像:

s3://myBucket/path1/path2/v6.1.0
s3://myBucket/path1/path2/v6.1.1
s3://myBucket/path1/path2/v6.1.102
s3://myBucket/path1/path2/v6.1.2
s3://myBucket/path1/path2/v6.1.25
s3://myBucket/path1/path2/v6.1.99

S3不考虑版本号排序(这很有意义),但是按字母顺序排列,列表中的最后一个不是最后一个上载。在该示例中,.../v6.1.102是最新的。

到目前为止,这是我得到的:
aws s3api list-objects 
--bucket myBucket
--query "sort_by(Contents[?contains(Key, \`path1/path2\`)],&LastModified)"´
--max-items 20000

因此,这里的一个问题是max-items似乎是按顺序从存储桶中的所有文件按字母顺序开始的。 20000确实进入了我的文件,但是浏览这么多文件的过程非常缓慢。

所以我的问题是双重的:

1-这仍在搜索整个存储桶,但我只想将其范围缩小到path2/。我可以这样做吗?

2-这仅列出对象,是否可以仅列出路径列表?

基本上,最终目标是我只希望命令返回上面示例中的最新文件夹名称,例如“v6.1.102”。

最佳答案

要回答#1,您可以添加--prefix path1/path2来限制您在存储桶中查询的内容。

就最后修改的排序而言,我只能想到使用SDK组合 list_objects_v2 head_object (boto3)来对对象进行最后修改并以编程方式进行排序

更新

或者,您可以按jmespath中的LastModified进行反向排序,并返回第一项,以为您提供最新的对象,并从那里收集目录。

aws s3api list-objects-v2 \
--bucket myBucket \
--prefix path1/path2 \
--query 'reverse(sort_by(Contents,&LastModified))[0]'

关于amazon-web-services - AWS CLI S3API在路径中找到最新文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47229999/

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