Как ограничить размер загрузки корзины в Backblaze B2 (S3-СОВМЕСТИМЫЙ API)?

Я реализую в нашем приложении функционал, при котором пользователи покупают подписку и создают свое рабочее пространство. Каждый план подписки имеет разные ограничения на хранилище (например, 5 ГБ для небольшого плана). Мы используем Backblaze B2 для хранения и в настоящее время создаем отдельный бакет при каждом создании организации, и это работает нормально.

Однако мне нужно ограничить размер загрузки корзины в соответствии с планом подписки, приобретенным пользователем. Я много исследовал, но не смог найти способа обеспечить соблюдение ограничений хранилища в корзинах Backblaze. Более того, Backblaze, похоже, не предлагает способа получить размер хранилища ведра или целой папки.

Я просмотрел документацию Backblaze и поискал в Интернете любые существующие решения или обходные пути, но не нашел способа напрямую ограничить размер хранилища корзины. Я ожидал найти метод или API, который позволит устанавливать квоты хранилища или получать общий размер сегмента для программного обеспечения этих ограничений.

Кроме того, я использую @aws-sdk/client-s3 для управления хранилищем, совместимым с S3.

Кто-нибудь знает, как реализовать ограничения хранилища в корзинах Backblaze B2 в зависимости от плана подписки пользователя? Будем очень признательны за любые советы или обходные пути. Спасибо!

🤔 А знаете ли вы, что...
Node.js позволяет создавать RESTful API с помощью библиотеки Restify.


1
59
3

Ответы:

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


Решено

Обеспечение соблюдения ограничений хранилища в корзинах Backblaze B2 напрямую не поддерживается. Вам придется самостоятельно отслеживать использование хранилища в своем приложении, но я могу вам помочь:

Отслеживание использования: ведите учет использования хранилища для каждого рабочего пространства пользователя в базе данных вашего приложения.

Принудительные ограничения: прежде чем разрешать какие-либо операции с хранилищем (например, загрузку), проверьте записанное использование, чтобы убедиться, что оно не превышает подписанный лимит.

Уведомления. Предоставляйте пользователям обратную связь, когда они достигают или превышают лимиты хранилища, используя сообщения или уведомления в вашем приложении.

Периодические проверки: реализуйте проверки для периодической сверки и очистки использования хранилища.

Если у вас есть какие-либо конкретные вопросы или вам нужна дополнительная информация о реализации этого, дайте мне знать!


Вы можете достичь своей цели, используя Партнерский API Backblaze. Вместо того, чтобы создавать корзину для каждого клиента в одной учетной записи Backblaze, вы можете использовать Partner API для создания учетных записей Backblaze под вашим контролем и организованных в группы для ваших клиентов.

Учетная запись участника группы не позволяет клиенту войти в систему; вместо этого вы, как администратор группы, можете создать ключ приложения для члена группы и выполнять операции в контексте этой учетной записи.

Вы также можете установить ограничения на объем хранилища, пропускную способность загрузки и т. д. для каждой учетной записи и получить доступ к ежедневным отчетам с подробным описанием использования каждым из членов вашей группы.

В документации по партнерскому API перечислены шаги для начала работы. В частности, обратите внимание, что вам нужно будет связаться с отделом продаж Backblaze, чтобы они предоставили вам доступ к API.


Интересные вопросы для изучения

Пакет Whatsapp-web.js не работает при сканировании QR-кодаНевозможно прочитать свойства null (чтение «коллекции»), эта ошибка возникает при отправке формы. Невозможно сохранить данные в базе данныхЗапрос на вставку MySQL выполнен успешно, но не вставляется в таблицу базы данныхОбновление документа Firestore несколько раз с помощью функции триггера события перезаписывает или прекращает обновление после нескольких триггеровОшибка при развертывании определенной облачной функции Firebase. Невозможно загрузить предоставленный модульПакет Whatsapp-web.js не работает при сканировании QR-кодаЗапрос на вставку MySQL выполнен успешно, но не вставляется в таблицу базы данныхЗаблокировано политикой CORS, несмотря на наличие доменного имени в файле на стороне сервераНевозможно заполнить мои поля с помощью populate()Проблемы аутентификации MongoDB с Node.js и Mongo-Express в настройке Docker Compose