Определите размер папок S3 с помощью PHP SDK - PullRequest
0 голосов
/ 19 июня 2020

Я использую корзину S3, но не могу найти способ получить размер указанной c папки внутри моей корзины .

Scénario:

У меня есть do c для каждого пользователя на моем веб-сайте /user1..../user2, где у каждого из них будет ограниченный объем места (1 ГБ на папку). Мне нужно показать на моем веб-сайте пространство, которое у них еще есть, например:

Canheadd = consumed space (what I'm lookingfor) + new file size

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

I ' Я знаю, что вы можете сделать все oop из objectlist, но для меня это не лучший вариант из-за количества и размера каждого документа.

Любое новое или прямое решение приветствуется.

1 Ответ

1 голос
/ 19 июня 2020

Не существует «быстрого» способа получить объем памяти, используемый в конкретной «папке».

Правильный способ - вызвать ListObjects(Prefix='folder/',...), итерацию по возвращенным объектам и просуммируйте размер каждого объекта. Обратите внимание, что каждый вызов возвращает не более 1000 объектов, поэтому коду может потребоваться повторять вызовы ListObjects.

Если этот метод слишком медленный, вы можете поддерживать базу данных всех объектов и их размеры и запрашивать базу данных, когда приложению необходимо определить размер. Используйте Amazon S3 Events, чтобы активировать функцию AWS Lambda при создании / удалении объектов, чтобы поддерживать базу данных в актуальном состоянии. Это довольно сложный метод, поэтому я бы предложил первый метод, если только нет конкретной c причины, по которой это невозможно.

...