Как я могу получить общий размер корзины Amazon S3, используя Node.js? - PullRequest
1 голос
/ 25 августа 2011

Я работаю над несколькими проектами Node.js, в которых корзины Amazon S3 будут установлены для каждого пользователя, который создает учетную запись.Я хочу ограничить общий размер того, что пользователь может использовать.

Я смотрел на клиента Knox https://github.com/learnboost/knox, который должен облегчить работу с Amazon S3 при разработке приложений Node.js.

Но после долгих исследований я могу 'Кажется, я не могу найти способ эффективно вернуть размер файла корзины, на котором я могу сделать ограничения учетной записи пользователя и т. д.

Я надеюсь, что это правильный подход в первом, но, возможно, нет?Концептуально я хочу хранить файлы мультимедиа учетной записи пользователя, загруженные на Amazon S3, и хочу ограничить общий объем загрузки и использования пользователем.

Большое спасибо, Джеймс

Ответы [ 4 ]

2 голосов
/ 26 августа 2011

Нет открытого API для получения размера сегмента.Единственный способ сделать это - получить все ключи, перебрать их и суммировать размер всех объектов в корзине.

1 голос
/ 05 мая 2012

Как сказал Эльф, нет прямого способа получить общий размер сегмента от любой из операций S3. Лучшее, что вы можете сделать, - это перебрать все элементы в ведре и суммировать их соответствующие размеры.

Вот полный пример программы, которая перечисляет все объекты в корзине и выводит итоговое количество файлов и количество байтов в конце:

Не стесняйтесь копировать его и изменять в соответствии с вашими требованиями.

0 голосов
/ 24 декабря 2014

Я попал на эту страницу, потому что искал то же решение. У aws cli есть способ сделать это: aws s3api list-objects --bucket $ bucket --output json --query "[sum (Contents []. Size)]"

Я написал супер простую оболочку, которая преобразует байты в КБ, МБ или ГБ. Я не самый элегантный кодер на планете, но это работает так: s3du my-bucket-name g (для ГБ, k для КБ, m для МБ)

Чем больше ведро, тем дольше это займет, но оно работает: https://github.com/defenestratexp/s3du.git

Очевидно, что для работы этого метода необходимо правильно установить aws cli. Приветствия: D

0 голосов
/ 22 сентября 2012

Я знаю, что вы спрашивали о Node.js, но для тех, кто просто хочет ЛЮБОЙ способ сделать это, воспользуйтесь инструментом s3cmd: http://s3tools.org/s3cmd

Как только вы получите эту настройку, вы можете запустить s3cmd du s3://bucket-name

Попробуйте сначала на маленьком ведре, чтобы убедиться, что оно работает.Эта команда все еще проходит через все, поэтому большое ведро = большое время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...