#amazon-web-services #amazon-cloudfront #sharing #signed-url
Вопрос:
Я настроил AWS CloudFront для обслуживания медиафайлов, которые находятся в корзине S3. С точки зрения защиты этого контента, первое, что я сделал, это назвал медиафайлы с помощью строк uuidv4 и разрешил публике читать только медиафайлы (т. Е. Выполнять только команду GetObject ()): для его извлечения нужно было бы знать имя файла. Однако при чтении документации AWS становится совершенно ясно, что они настоятельно рекомендуют не разрешать публичный доступ, а осуществлять контроль с помощью политики или контрольного списка. Итак, в итоге я реализовал подписанные URL-адреса.
Тем не менее, есть случаи, когда люди хотят делиться контентом со своими друзьями, в социальных сетях, мессенджерах или даже просто по электронной почте. В то время как некоторые или все сайты социальных сетей могут просто копировать изображения/видео/аудио, которыми делятся люди (хотя я не исследовал это), в этом случае предоставление подписанного URL-адреса с коротким сроком действия будет работать просто отлично. Но это все еще оставляет некоторые сценарии-наиболее очевидные по электронной почте-где подписанный URL-адрес будет проблематичным, когда люди, с которыми был предоставлен общий доступ к контенту, попытаются получить к нему доступ в будущем (что может произойти в следующем году). Я полагаю, что есть два очевидных решения:
- Скопируйте общие медиафайлы в отдельный общедоступный каталог.
- Только для общих носителей вместо предоставления подписанных URL-адресов CloudFront предоставьте прямые незащищенные URL-адреса нашему серверу, который затем получит медиафайл из корзины S3.
Первый вариант кажется расточительным, если только нет возможности создать символическую ссылку или что-то подобное для общих медиафайлов из общедоступного каталога. Я не знаю, возможно ли это вообще, но это кажется возможным. Второй вариант должен работать нормально, но было бы предпочтительнее, если бы все носители можно было доставлять через CloudFront.
Возможно, есть предпочтительная стратегия или лучшая практика, которую люди часто используют. Я был бы признателен за любое понимание таких стратегий. Заранее спасибо.