Как создать одноразовую ссылку для скачивания с Amazon S3?

Я хочу создать одноразовую ссылку для загрузки в файл amazon s3. Эта ссылка истекает после загрузки файла.

Я хочу, чтобы этот файл все еще размещался, но посетитель может загружать только один файл.

Мне нужен сценарий: у меня есть сайт для загрузки файлов, где пользователи платят за файл. Я хочу, чтобы пользователь мог только загрузить файл один раз с веб-сайта (и Amazon s3), я также не хочу, чтобы пользователь мог поделиться ссылкой прямого скачивания с другими людьми.

Если это невозможно, я задаюсь вопросом, эффективнее ли это ограничивать его IP-адресом или Cookie, если это возможно?

Ответ 1

Невозможно сказать S3, чтобы ссылка использовалась только один раз. Но вы можете создать ссылку, которая может использоваться только до определенного времени. То, что я делаю, перенаправляет запросчика на ссылку S3, срок действия которой истекает через несколько минут, поэтому он или она не успевают поделиться им. Вы можете сделать это время истечения очень короткое, даже несколько секунд, если у их браузера есть время, чтобы получить ответ перенаправления и следовать ему.

Ответ 2

Вы можете написать сервис "один раз-генератор URL-адресов" (либо в форме веб-сайта, либо API-интерфейс отдыха) и использовать функцию объединения aws для достижения этой цели.

Рассмотрим следующую процедуру:

  • Когда пользователь хочет URL-адрес в один раз, он отправляет запрос на ваш "один времени ".
  • Ваша служба генерирует "одноразовый URL-адрес" и возвращает его пользователю. URL-адрес является взаимно однозначным сопоставлением с ресурсом S3, который хочет пользователь.
  • Когда пользователь делает запрос на "одноразовый URL-адрес", служба создает временного пользователя, используя функцию объединения пользователей AWS, и генерирует назначенный S3-адрес от имени временного пользователя.
  • Служба отправляет ответ пользователю, перенаправляя назначенный URL-адрес.
  • Пользователь следует за перенастройкой и начинает загрузку файла.
  • Затем служба удаляет временного пользователя. (Или истекает срок его действия.)