Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Node.js获取AmazonS3存储桶的总大小?_Node.js_Amazon S3 - Fatal编程技术网

如何使用Node.js获取AmazonS3存储桶的总大小?

如何使用Node.js获取AmazonS3存储桶的总大小?,node.js,amazon-s3,Node.js,Amazon S3,我正在处理几个Node.js项目,其中AmazonS3存储桶将为每个创建帐户的用户设置。我想限制用户可以使用的总大小 我一直在研究Knox客户机,它在开发Node.js应用程序时应该可以简化AmazonS3的使用 但是经过大量的研究,我似乎找不到一种有效地恢复bucket文件大小的方法——我可以利用它来进行用户帐户限制等 我希望这是第一个正确的方法,但也许不是?从概念上讲,我想存储上传到AmazonS3上的用户帐户媒体文件,并且我想限制用户可以上传和使用的总量 非常感谢,, James没有公开的

我正在处理几个Node.js项目,其中AmazonS3存储桶将为每个创建帐户的用户设置。我想限制用户可以使用的总大小

我一直在研究Knox客户机,它在开发Node.js应用程序时应该可以简化AmazonS3的使用

但是经过大量的研究,我似乎找不到一种有效地恢复bucket文件大小的方法——我可以利用它来进行用户帐户限制等

我希望这是第一个正确的方法,但也许不是?从概念上讲,我想存储上传到AmazonS3上的用户帐户媒体文件,并且我想限制用户可以上传和使用的总量

非常感谢,,
James

没有公开的API来获取桶的大小。唯一的方法是获取所有键,遍历它们,并将bucket中所有对象的大小相加。

正如Elf所述,没有直接的方法可以从任何S3操作中获取bucket的总大小。您所能做的最好的事情就是循环遍历bucket中的所有项,并将它们各自的大小相加

下面是一个完整的程序示例,它列出了一个bucket中的所有对象,并在末尾打印出文件计数和字节计数的摘要:


请随意复制它并根据您的要求进行更改。

我知道您询问了Node.js,但对于那些只想通过任何方式实现这一点的人,请查看s3cmd工具:

一旦设置完成,就可以运行
s3cmd du s3://bucket name


先在一个小水桶上试一下,确保它能工作。这个命令仍然循环遍历所有内容,所以big bucket=big time。

我之所以进入这个页面,是因为我在寻找相同的解决方案。aws cli有一种方法可以做到这一点: aws s3api列出对象——bucket$bucket——输出json——查询“[sum(Contents[].Size)]”

我编写了一个超级简单的包装器,可以将字节转换为KB、MB或GB。 我不是这个星球上最优雅的编码员,但这是通过以下方式实现的: s3du我的存储桶名称g(表示GB,k表示KB,m表示MB)

铲斗越大,所需时间越长,但它可以工作:


显然,必须正确安装aws cli才能使用此方法。干杯:D

你打算奖励答案吗?当使用S3API
listObjects
时,有1000个键/响应的上限,因此,您无法通过API获取此信息。您是否可以包含此代码,因为此答案是无用的,因为链接已断开。