2011-08-25 207 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

相关问题