Нахождение совокупной длины содержимого S3 активов с определенным префиксом пути - PullRequest
0 голосов
/ 17 мая 2018

У меня есть активы клиента, хранящиеся в S3 - значение, связанное с учетной записью, которое служит первым элементом на пути к каждому активу, например,

  • account-1 / media / video / 382476581823.mp4
  • account-1 / images / 2348752.png

Я хотел бы узнать общий объем хранилища, потребляемый всеми активами для учетной записи - все активы, которые имеют префикс«account-1» для пути в приведенном выше примере.У меня есть рабочее решение, которое перебирает объекты ObjectSummary, возвращаемые запросом S3, но оно слишком медленное для моих потребностей, поскольку оно выполняет HTTP-запрос для каждого объекта.

Мне интересно, возможно ли выполнить вычисленияв запросе S3, аналогичном тому, что вы можете сделать с DynamoDB - попросите S3 выполнить вычисление и вернуть итоговое значение.

Примечание: Использование aws-sdk-ruby

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

S3 объявил о новой функции S3 Select, которая позволяет вам использовать SQL для запроса ваших корзин S3. Вот объявление о запуске:

https://aws.amazon.com/blogs/aws/s3-glacier-select/

0 голосов
/ 18 мая 2018

Я должен был упомянуть, что мы используем старую версию 1.x aws-sdk-ruby, поэтому мой ответ может отличаться от того, что вы найдете в текущей версии S3 sdk.

Мне удалось использовать метод AWS :: S3 :: Client # list_objects и выполнить итерации по этим результатам. Хотя это не совсем то, на что я надеялся (вычисления по-прежнему выполняются локально), по крайней мере, он избегает HTTP-запроса HEAD на носитель S3, который вызывается при переборе результатов вызова объектов S3 :: Bucket #.

...