【问题标题】:Grab latest AWS S3 Folder Object name with AWS CLI使用 AWS CLI 获取最新的 AWS S3 文件夹对象名称
【发布时间】:2022-02-04 05:37:54
【问题描述】:

我尝试使用这篇文章查找最后修改的文件,然后 awk 查找它所在的文件夹:Get last modified object from S3 using AWS CLI

但这对于超过 1000 个文件夹并不理想,而且 documentation 应该会失败。我有 2000 多个文件夹对象需要搜索。我想要的文件夹总是以 D 开头,后面跟着一组递增的数字。例如:D1200

答案的结果使我创建了这个有效的调用:

aws s3 ls main.test.staging/General_Testing/Results/ --recursive | sort | tail -n 1 | awk '{print $4}'

但搜索数千个文件需要 40 多秒,然后我需要正则表达式解析输出以找到文件夹对象,而不是其中修改的最后一个文件。另外,如果我尝试这样做以找到我想要的文件夹(这是Results 对象之后的对象):

aws ls s3 main.test.staging/General_Testing/Results/ | sort | tail -1

那么我的输出将是D998,因为排序函数会像这样对文件夹名称进行排序:

D119
D12
D13

因为从技术上讲,D12 大于 D119,因为它在第二位有一个 2。按照这种奇怪的逻辑,我无法使用该调用来可靠地检索编号最高的文件夹,因此是最后一个创建的文件夹。需要注意的是,包含文件的文件夹对象没有可用于查询的Last Modified 标签。

为了明确我的问题:我可以使用什么调用来查看大量 S3 对象以找到编号最大的文件夹对象?最好答案是快速的,可以处理 1000 多个对象,并且不需要正则表达式分解。

【问题讨论】:

  • 抱歉,请问您有什么问题?它不是很清楚你在扼杀什么?大量文件?缺少Last Modified?排序顺序错误?
  • @Marcin 请告诉我如何才能更清楚,但我正在寻找一个电话来找到我想要的文件夹名称,这不会花费太长时间。该注释只是让人们不要给我“查询上次修改”作为答案。不过,如果他们知道 AWS,也许我应该假设他们已经知道这一点。

标签: amazon-web-services amazon-s3 aws-cli


【解决方案1】:

我想知道您是否可以使用CommonPrefixes 的列表来克服您的程序有很多文件夹?

试试这个命令:

aws s3api list-objects-v2 --bucket main.test.staging --delimiter '/' --prefix 'General_Testing/Results/' --query CommonPrefixes --output text

(注意这里使用的是s3api而不是s3。)

它应该提供一个“文件夹”列表。不知道返回的“文件夹”数量是否有限制。

至于在D2之前排序D119,这是因为它是对字符串进行排序。排序字符串时输出完全正确。

要按数字部分排序,您可以使用“版本排序”。见:How to sort strings that contain a common prefix and suffix numerically from Bash?

【讨论】:

  • 我要投票,因为这是一个很好的答案,但这相当于我在问题中的“工作”调用,因为它返回 General_Testing/Results/D###。因此,这是一个答案,我仍然需要通过正则表达式解析来获取最后一个 D 文件夹对象。
  • 您可以使用--prefix 'General_Testing/Results/D',它只会返回带有D 的对象。然后,您需要提取 CommonPrefix 的数字部分并按数字排序。使用 Python 之类的语言而不是 shell 可能更容易。
  • 将标记为答案 bc 对我有用的是引导您的“版本排序”答案并执行 aws s3 ls main.test.staging/General_Testing/Results/ | sort -V | tail -1 这对于 2000 多个文件夹非常有效,即使通过文档我认为它不是应该的。不管怎样,谢谢你的帮助。
猜你喜欢
  • 2020-01-18
  • 2015-09-12
  • 2020-12-16
  • 2019-05-12
  • 2013-09-15
  • 1970-01-01
  • 2017-10-24
  • 2019-04-01
  • 1970-01-01
相关资源
最近更新 更多