【发布时间】:2020-05-18 07:53:39
【问题描述】:
背景
我使用 S3 存储付费内容。我的应用程序还使用 Cognito 对用户进行身份验证,并跟踪谁购买了哪些内容。但是如何让 S3 对象只对付费用户开放?
例如:“mybucket/private-content/obj1.pdf”中的对象需要用户 A 可以访问,但用户 B 不能访问,具体取决于购买记录。
我现在可以想到两种解决方案,但都不是理想的。
解决方案 1
将存储桶设为私有。然后在用户购买内容后为对象生成签名 URL。 问题:用户 A 可以购买内容并将签名的 URL 分享给用户 B。用户 B 无需付费即可访问该对象。
解决方案 2 每次用户购买一些内容时,将对象复制到 S3 中的用户文件夹。并使用存储桶策略来限制用户只能访问自己的文件夹。 问题:需要一遍又一遍地复制内容。这会增加我的存储成本。
【问题讨论】:
-
用户A想分享内容时,可以下载后私信发送。你不能限制它。但是你可以有一个生成URL和限制过期时间的功能
标签: amazon-web-services amazon-s3 amazon-cognito