当前位置: 首页 > 知识库问答 >
问题:

使用AWS CLI从S3获取上次修改的对象

宋耀
2023-03-14

我有一个用例,在这个用例中,我以编程方式启动一个EC2实例,从S3复制一个可执行文件,运行它并关闭实例(在用户数据中完成)。我只需要从S3获取最后添加的文件。

有没有办法使用AWS CLI工具从S3存储桶中获取上次修改的文件/对象?

共有3个答案

卫志泽
2023-03-14
aws s3api list-objects-v2 --bucket "bucket-name" |jq  -c ".[] | max_by(.LastModified)|.Key"
牟焱
2023-03-14

过了一会儿有一个小更新如何做它有点优雅:

aws s3api list-objects-v2 --bucket "my-awesome-bucket" --query 'sort_by(Contents, &LastModified)[-1].Key' --output=text

我们可以通过[-1]

此命令仅在没有任何外部依赖项的情况下执行此任务:

aws s3api list-objects-v2 --bucket "my-awesome-bucket" --query 'reverse(sort_by(Contents, &LastModified))[:1].Key' --output=text
王凌
2023-03-14

您可以使用aws s3 ls$bucket--recursive列出bucket中的所有对象:

$ aws s3 ls $BUCKET --recursive
2015-05-05 15:36:17          4 an_object.txt
2015-06-08 14:14:44   16322599 some/other/object
2015-04-29 12:09:29      32768 yet-another-object.sh

它们按键按字母顺序排序,但第一列是最后一次修改时间。一个快速的排序将按日期重新排序:

$ aws s3 ls $BUCKET --recursive | sort
2015-04-29 12:09:29      32768 yet-another-object.sh
2015-05-05 15:36:17          4 an_object.txt
2015-06-08 14:14:44   16322599 some/other/object

tail-n1选择最后一行,awk'{print$4}'提取第四列(对象的名称)。

$ aws s3 ls $BUCKET --recursive | sort | tail -n 1 | awk '{print $4}'
some/other/object

最后但并非最不重要的一点是,将其放入aws s3 cp以下载对象:

$ KEY=`aws s3 ls $BUCKET --recursive | sort | tail -n 1 | awk '{print $4}'`
$ aws s3 cp s3://$BUCKET/$KEY ./latest-object
 类似资料:
  • 我试图复制最新的文件基于最后修改从AWS S3文件夹到一个文件夹在同一个桶中,并在复制命令中使用排除和包括。 Folder_Test1: 我必须过滤文件名只有最新的文件和排除复制文件: 我尝试:步骤1复制文件从Folder_Test1到Folder_Test2: 步骤2它将获取最新的文件从Folder_Test2: 如何将最新文件从文件夹_Test2复制到文件夹_Test3?或者如何从文件夹_Te

  • 有什么想法可以解决这个问题吗?谢谢。

  • 问题内容: 有什么标准的方法可以告诉您页面的最后修改时间?目前,我正在这样做: 但是,看起来有些站点没有字段。 http://www.cbc.ca具有以下标头字段: 我可以解析页面以尝试获取其日期,但这似乎是一个很大的痛苦。标准是什么? (如果可能的话,我想坚持使用URLConnection,因为那是我用来下载网页的方法) 问题答案: 没有标准。动态生成的网页通常没有“ Last- Modifie

  • 问题内容: 我正在编写一个Python脚本,使用boto将文件上传到s3。我只想上传已更改的文件,可以在上次修改的日期时间之前检查一下。但是我找不到在boto API中进行最后修改的api。 问题答案: 这是一段Python / boto代码,将打印存储桶中所有键的last_modified属性:

  • 问题内容: 在具有新I / O API的Java7中,是否有一种简便的方法可以按上次修改日期列出目录的内容?基本上,我只需要获取未修改时间最长的文件(按最后修改的升序排序,采用第一个文件名)。 问题答案: 并没有真正的“简便方法”,但是有可能: 这将对文件排序最快,最后修改的文件最后排序。s不会遍历子目录。

  • 我试图弄清楚是否有可能返回某种流(可能是内存流?)我从我的桶里得到的东西。 S3 bucket包含很多不同类型的图像、文档等。所有这些都应该在我的网站上使用。但是,我不想显示AWS S3存储桶的路径 这就是为什么我试图创建一个流,并动态显示图像和可下载文档,而不是使用完整路径。这有意义吗?:-) 我用的是C#/。NET AWS SDK。 期待听到任何想法和方向指向!