Фон
Я использую S3 для хранения платного контента. Мое приложение также использует Cognito для аутентификации пользователей, а также отслеживает, кто какой контент приобрел. Но как я могу сделать объект S3 доступным только для платных пользователей?
Например: объект в "mybucket / private-content / obj1.pdf" должен быть доступен для пользователя A, но не для пользователя B в зависимости от записи о покупке.
Пока что я могу придумать два решения, но ни одно из них не является идеальным.
Решение 1
Сделать ведро частный. Затем создайте подписанный URL-адрес для объекта после того, как пользователь приобрел контент. Проблема : Пользователь A может приобрести контент и поделиться подписанным URL-адресом для пользователя B. Пользователь B может получить доступ к объекту без оплаты.
Решение 2 Каждый раз, когда пользователь приобрел некоторый контент, скопировал объект в пользовательскую папку на S3. И используйте политику корзины, чтобы ограничить доступ пользователя только к своей собственной папке. Проблема : необходимо дублировать содержимое снова и снова. Это увеличивает мою стоимость хранения.