Я разрабатываю онлайн-инструмент для проектирования продуктов для Shopify. Приложение будет размещено на моем веб-сервере. Пользователь разместит код JavaScript на своей веб-странице. Код откроет мое приложение в iframe (по иронии судьбы именно так работают приложения Shopify). Затем пользователь может использовать этот инструмент для создания дизайна и сохранить сгенерированное изображение на моем веб-сервере. Я хочу загружать изображения, созданные пользователем, на сервер хранения, а не хранить их на своем веб-сервере. Я ищу услугу / решение, которое позволило бы моему приложению создать учетную запись хранения для пользователя во время регистрации и указать максимально допустимое пространство для хранения. Служба также должна разрешать загрузку файлов через API. А загруженные файлы должны быть доступны по URL-адресу. Сервис также должен иметь возможность предоставлять аналитику для каждого пользователя.
@Chris S3 - хороший вариант, за исключением того, что вы не можете ограничить размер ведра. Для ограничения размера в мое приложение нужно добавить логику, чего я стараюсь избегать.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Это достаточно просто. Каждый раз, когда клиент использует ваш сервис для загрузки контента, вы знаете об этом. Поэтому запишите событие в простой структуре данных в вашем приложении. Если клиент превышает какой-то лимит, разберитесь с этим. Вы ведете автобус, поэтому можете сказать им, чтобы они заплатили больше, сойти или оставить все как есть. Amazon S3 настолько дешев, что никогда не будет стоить вам денег, а вероятность того, что какие-либо клиенты будут стоить вам денег, настолько мала, что у вас есть около десяти минут работы, чтобы сделать этот простой блок кода вещью и двигаться дальше.
Для других людей, оказавшихся в такой же ситуации, вот что я в итоге сделал
Предложение @chris для одного ведра на пользователя было хорошим, и сначала я реализовал эту стратегию, но на более позднем этапе я столкнулся с препятствием. Я обнаружил, что S3 не позволяет вам получать доступ к контенту через HTTPS. Чтобы получить доступ к контенту через HTTPS, мы должны использовать Cloudflare или любой другой CDN, где вы создаете зону (https) и указываете ведро в качестве источника. Имея по одной корзине на пользователя, нам нужно создать новую зону для каждого нового пользователя. Эта ситуация была не идеальной, так как многие сети CDN взимают дополнительную плату за каждую новую созданную зону. Поэтому мы решили использовать одну корзину для всех пользователей и создать в ней папку для каждого пользователя. Затем мы создали зону в нашей CDN и указали общедоступный путь корзины в качестве источника зоны CDN.
Мы также планируем ограничить один сегмент данными не более чем для 100 пользователей и создавать новый сегмент после каждых 100 новых пользователей.
AWS S3? Одна корзина на пользователя?