Я реализую в нашем приложении функционал, при котором пользователи покупают подписку и создают свое рабочее пространство. Каждый план подписки имеет разные ограничения на хранилище (например, 5 ГБ для небольшого плана). Мы используем Backblaze B2 для хранения и в настоящее время создаем отдельный бакет при каждом создании организации, и это работает нормально.
Однако мне нужно ограничить размер загрузки корзины в соответствии с планом подписки, приобретенным пользователем. Я много исследовал, но не смог найти способа обеспечить соблюдение ограничений хранилища в корзинах Backblaze. Более того, Backblaze, похоже, не предлагает способа получить размер хранилища ведра или целой папки.
Я просмотрел документацию Backblaze и поискал в Интернете любые существующие решения или обходные пути, но не нашел способа напрямую ограничить размер хранилища корзины. Я ожидал найти метод или API, который позволит устанавливать квоты хранилища или получать общий размер сегмента для программного обеспечения этих ограничений.
Кроме того, я использую @aws-sdk/client-s3
для управления хранилищем, совместимым с S3.
Кто-нибудь знает, как реализовать ограничения хранилища в корзинах Backblaze B2 в зависимости от плана подписки пользователя? Будем очень признательны за любые советы или обходные пути. Спасибо!
Ты прав. Поэтому я обрабатываю это в своем коде, суммируя размеры файлов при загрузке и сохраняя эту сумму в базе данных. Я также проверяю, превышает ли общая сумма лимит размера плана. Спасибо за помощь, чувак.
вам придется самостоятельно создать маршрут с помощью multer, чтобы принять файл, затем в своем маршруте вы можете проверить тип/размер файла и т. д. и загрузить его оттуда
Ваш ответ можно улучшить, добавив дополнительную вспомогательную информацию. Пожалуйста, отредактируйте , добавив дополнительную информацию, например цитаты или документацию, чтобы другие могли подтвердить правильность вашего ответа. Более подробную информацию о том, как писать хорошие ответы, вы можете найти в справочном центре.
Обеспечение соблюдения ограничений хранилища в корзинах Backblaze B2 напрямую не поддерживается. Вам придется самостоятельно отслеживать использование хранилища в своем приложении, но я могу вам помочь:
Отслеживание использования: ведите учет использования хранилища для каждого рабочего пространства пользователя в базе данных вашего приложения.
Принудительные ограничения: прежде чем разрешать какие-либо операции с хранилищем (например, загрузку), проверьте записанное использование, чтобы убедиться, что оно не превышает подписанный лимит.
Уведомления. Предоставляйте пользователям обратную связь, когда они достигают или превышают лимиты хранилища, используя сообщения или уведомления в вашем приложении.
Периодические проверки: реализуйте проверки для периодической сверки и очистки использования хранилища.
Если у вас есть какие-либо конкретные вопросы или вам нужна дополнительная информация о реализации этого, дайте мне знать!
Теперь я каждый раз, когда пользователь загружает файлы, суммирую размеры файлов и сохраняю итоговую сумму в базе данных. Я также проверяю, превышает ли эта сумма предел размера плана. Спасибо за помощь!
Вы можете достичь своей цели, используя Партнерский API Backblaze. Вместо того, чтобы создавать корзину для каждого клиента в одной учетной записи Backblaze, вы можете использовать Partner API для создания учетных записей Backblaze под вашим контролем и организованных в группы для ваших клиентов.
Учетная запись участника группы не позволяет клиенту войти в систему; вместо этого вы, как администратор группы, можете создать ключ приложения для члена группы и выполнять операции в контексте этой учетной записи.
Вы также можете установить ограничения на объем хранилища, пропускную способность загрузки и т. д. для каждой учетной записи и получить доступ к ежедневным отчетам с подробным описанием использования каждым из членов вашей группы.
В документации по партнерскому API перечислены шаги для начала работы. В частности, обратите внимание, что вам нужно будет связаться с отделом продаж Backblaze, чтобы они предоставили вам доступ к API.
Amazon S3 не предлагает эту функциональность, поэтому она должна быть либо функцией Backblaze, либо чем-то, чем управляет ваш код.