AWS 在 S3 存储桶中查找最大文件大小

xtr*_*tra 9 amazon-s3 amazon-web-services

我想找到 S3 存储桶中最大文件的大小和名称。

目前我有:

aws s3api list-objects --bucket bucket-name --output json --query "[max(Contents[].Size), length(Contents[])]"
Run Code Online (Sandbox Code Playgroud)

这不允许我看到文件的名称。

我还有一个命令来列出存储桶上所有文件的详细信息:

aws s3api list-object-versions --bucket bucket-name --query 'Versions[*].Size'
Run Code Online (Sandbox Code Playgroud)

什么命令会给我 S3 存储桶上最大文件的名称和大小?

spa*_*owt 16

仅使用 AWS CLI,这将找到最大的文件:

aws s3api list-objects-v2 --bucket bucket-name --query "sort_by(Contents, &Size)[-1:]"
Run Code Online (Sandbox Code Playgroud)

或包括非当前版本(如果适用):

aws s3api list-object-versions --bucket bucket-name --query "sort_by(Versions[*], &Size)[-1:]"
Run Code Online (Sandbox Code Playgroud)

可选调整:

  • 替换-1-N以查找最大的 N 个文件。
  • .[Key,Size]在 末尾包含以--query仅选择这些字段。

可悲的是,我认为过滤是在客户端完成的,因为在大存储桶上运行时下载了 28 MB。然而,尽管速度不快,它仍然是一个有用的 1-liner。


ale*_*wan 5

以下应返回存储桶“bucket-name”中最大文件的名称和大小。

aws s3api list-object-versions --bucket bucket-name | jq -r '.Versions[] | "\(.Key)\t \(.Size)"' | sort -k2 -r -n | head -1
Run Code Online (Sandbox Code Playgroud)

上面的命令使用 jq,你可以从https://stedolan.github.io/jq/download/安装