Как настроить медиасервер на базе S3 с базовой аутентификацией и защитой паролем

Как настроить медиасервер на базе S3 с базовой аутентификацией и защитой паролем

Требование

  • Обслуживайте аудио и видео, хранящиеся в контейнере S3
  • Выборочная защита папок с помощью базовой аутентификации (имя пользователя и пароль);
  • Минимальная задержка, насколько это возможно, но не обязательно
  • Стоимость также является фактором, но мы открыты для идей
  • Способ для медиа-команды загрузить новый контент. (Для s3 им нужно вручную сделать каждый файл общедоступным)
  • Мы очень маленькая команда с ограниченными ресурсами.

Текущая настройка

  • Данные хранятся в контейнере s3
  • Веб-сайт, работающий внутри экземпляра EC2
  • Apache2 сервер

Наши соображения

  • Обратные прокси-адреса s3 на уровне apache и настройка базовой аутентификации на уровне apache. НО для этого требуется держать все объекты bucket открытыми , а затем применять политики bucket, что выходит из-под контроля!

  • Полностью заблокируйте публичный доступ S3, а затем используйте AWS PHP SDK для обслуживания конусной палатки. Затем позвольте медиа-команде загрузить новый контент из консоли AWS. Не уверен, как эта опция повлияет на задержку.

Мы уверены, что для аналогичных требований найдутся хорошие решения. Пожалуйста, укажите нам приемлемое решение. Большое спасибо.

Редактировать: На данный момент мы оставили bucket приватным, заблокировав весь публичный доступ. Затем добавили политику bucket, чтобы разрешить публичный доступ только к нашему экземпляру EC2, и таким образом мы достигли того, чего хотели. Но все еще открыты для полного решения с низкой задержкой, к которому мы можем двигаться.

решение1

Вместо EC2 вы, вероятно, захотите рассмотреть обслуживание статического веб-сайта либо через S3, либо через CloudFront. CloudFront также позволит вам сделать контейнер приватным. Если вам нужен динамический сайт, размещайте API только на EC2 (или Lambda & API Gateway) и обращайтесь к ним с сайта, размещенного на S3.

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

Связанный контент