Amazon-Web-Services

如何獲取 Amazon S3 儲存桶的大小?

  • September 29, 2021

我想繪製 Amazon S3 儲存桶的大小(以字節為單位,以及項目數),並正在尋找一種有效的方式來獲取數據。

s3cmd工具提供了一種使用獲取總文件大小的方法s3cmd du s3://bucket_name,但我擔心它的擴展能力,因為它看起來像是獲取每個文件的數據併計算自己的總和。由於亞馬遜以 GB 為單位向使用者收費,因此他們不直接公開此值似乎很奇怪。

儘管Amazon 的 REST API返回儲存桶中的項目數,但s3cmd似乎沒有公開它。我可以做s3cmd ls -r s3://bucket_name | wc -l,但這似乎是一個黑客。

Ruby AWS::S3庫看起來很有希望,但只提供了桶項目的數量,而不是桶的總大小。

是否有人知道提供獲取此數據的方法的任何其他命令行工具或庫(首選 Perl、PHP、Python 或 Ruby)?

AWS CLI 現在支持--query採用JMESPath表達式的參數。

list-objects這意味著您可以對使用sum(Contents[].Size)和 count like給出的大小值求和length(Contents[])

這可以使用以下官方 AWS CLI 執行,並於 2014 年2 月推出

aws s3api list-objects --bucket BUCKETNAME --output json --query "[sum(Contents[].Size), length(Contents[])]"

現在只需使用官方 AWS 命令​​行客戶端即可輕鬆完成此操作:

aws s3 ls --summarize --human-readable --recursive s3://bucket-name/

官方文件:AWS CLI 命令參考(版本 2)

如果您不想計算整個儲存桶,這也接受路徑前綴:

aws s3 ls --summarize --human-readable --recursive s3://bucket-name/directory

引用自:https://serverfault.com/questions/84815