Состав сегментов S3

#amazon-web-services #amazon-s3 #minio #infrastructure

#amazon-веб-сервисы #amazon-s3 #минио #инфраструктура

Вопрос:

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

Теперь я думаю о двух возможных путях. Я хочу использовать S3 для хранения.

  1. решение состоит в том, чтобы иметь единый сегмент для всех файлов в моем приложении
  2. решение состоит в том, чтобы иметь один сегмент для каждого веб-сайта.

Согласно документам AWS, S3 может обрабатывать «практически неограниченное количество байтов», поэтому я думаю, что первое решение может работать хорошо, но я думаю о других аспектах:

  1. Разве не проще иметь один сегмент для каждого веб-сайта? Лучше ли это для обслуживания?
  2. Какое решение является более безопасным, если да? Есть ли какие-то проблемы с безопасностью, о которых нужно заботиться?
  3. Применимо ли то же самое к другим сервисам, подобным S3, таким как Minio или DigitalOcean Spaces?

Большое вам спасибо за ваши ответы.

Ответ №1:

Я бы выбрал решение 1.

С технической точки зрения на самом деле практически нет ограничений на количество объектов, которые вы можете поместить в сегмент — S3 создан для экстремального масштаба. Для 5 веб-сайтов вариант 2 может показаться заманчивым, но он не очень хорошо масштабируется.

Существует мягкое ограничение (т. Е. Вы можете увеличить его) в 100 сегментов для каждого региона или для каждой учетной записи, что указывает на то, что использование сотен сегментов, вероятно, является антишаблоном. Кроме того, защита 100 сегментов не проще, чем защита одного сегмента.

Что касается безопасности: вы можете быть очень подробными с политиками сегментов в S3, если вам это нужно. Вы также можете выбрать способ шифрования каждого объекта по отдельности, если это требуется. Такие функции, как предварительно подписанные URL-адреса, могут помочь вам предоставить временный доступ к определенным объектам в S3.

Если ваша цель — предоставлять статический контент конечным пользователям, вам придется либо сделать объекты общедоступными для чтения, использовать вышеупомянутые предварительно подписанные URL-адреса, либо настроить CloudFront в качестве CDN перед вашим сегментом.

Я не знаю, как это относится к службам, подобным S3.