2011-08-25 188 views
1

我正在研究一些Node.js項目,其中將爲每個創建帳戶的用戶設置Amazon S3存儲桶。我想限制用戶可以使用的總大小。如何使用Node.js獲取Amazon S3存儲桶的總大小?

我一直在尋找諾克斯客戶端https://github.com/learnboost/knox,它應該使開發Node.js應用程序時易於使用Amazon S3。

但大量的研究後,我似乎無法找到有效地取回一個水桶文件大小的一種方式 - 關於這一點我能做的用戶帳戶限制等

我希望這是正確的做法在第一,但也許不是?從概念上講,我想存儲上傳到Amazon S3的用戶帳戶媒體文件,並且我想限制用戶總共可以上傳和使用的用戶數量。

非常感謝, 詹姆斯

+0

您打算授予答案嗎? – chilts

回答

1

正如Elf所說,沒有直接的方法可以從任何S3操作中獲得一個存儲桶的總大小。你可以做的最好的是循環通過桶中的所有物品並且總計它們的相應尺寸。

這裏有一個程序,它列出了所有的物體在桶,並打印出的文件數和字節數的總結在最後一個完整的示例:

隨意複製它並將其更改爲您的要求。

2

沒有公開的API獲得桶的大小。要做到這一點的唯一方法是獲取所有密鑰,遍歷它們,並總結桶中所有對象的大小。

0

我知道你問的Node.js,但對於那些只是想誰沒有辦法做到這一點,檢查出s3cmd工具:http://s3tools.org/s3cmd

一旦你安裝程序可以運行s3cmd du s3://bucket-name

嘗試它首先在一個小桶上以確保它正在工作。這個命令仍然循環所有事情,所以大桶=大時間。

0

我到了這個頁面,因爲我正在尋找相同的解決方案。 aws cli有這樣一個方法: aws s3api list-objects --bucket $ bucket --output json --query「[sum(Contents []。Size)]」

我寫了一個超級簡單的包裝器將字節轉換爲KB,MB或GB。 我不是這個星球上最優雅的編碼器,但這個的原理是: s3du我鬥名克(爲GB,k代表KB,m代表MB)

的大水桶中,再這樣意志但它的工作原理如下: https://github.com/defenestratexp/s3du.git

顯然,您必須安裝適合此方法的aws cli。乾杯:D

+0

當使用S3 API'listObjects'時,有1000個密鑰/響應的上限。 ,所以你不能用apis獲得這個信息。 – loretoparisi

相關問題