wordpress - 通过特定网站查看对象并将其上传到私有 Amazon S3 存储桶
问题描述
我正在使用带有 Tutor LMS 插件的 WordPress 构建课程市场。人们需要付费才能访问课程,因此只有客户才能看到他们购买的材料(视频和 PDF 文件)。
它们不能显示给非客户。
我将所有文件存储在 Amazon S3 私有存储桶上。服务器位于 Amazon EC2 上。
我还需要使用我的前端将文件上传到此存储桶。
什么是最好的解决方案?我该怎么做?
解决方案
您可以为您的 EC2 创建一个实例角色,为其授予使用 S3 存储桶所需的权限,在后端您可以使用 AWS 开发工具包来使用该存储桶,而该存储桶又将拥有您在实例角色中设置的权限。当客户端登录时,他们将能够访问他们所需的文件,而未登录的用户将无法访问文件。您将需要在您的代码上实现这一点。
另一种方法是为您的客户生成一个预签名的 URL,让他们临时访问他们的文件。预签名的 URL 在 x 时间后过期,客户端需要生成新的 URL。
签名 URL 始终是最佳选择,因为您不必为从应用程序层上传和下载的文件流进行管理。
还有一项增强功能,我们可以在 S3 前面使用 CloudFront,并使用云端签名 URL 上传内容,使用云端签名 URL 下载内容,这将提高您的性能和安全状况,因为任何人都无法公开访问 S3 .
推荐阅读
- javascript - GatsbyJS - TypeError:无法读取未定义的属性“childImageFluid”
- python-3.x - 从函数中删除对象作为属性
- python-3.x - 来自 sklearn.neighbors 的 KNeighborsClassifier 导入错误
- sql - 带有时间演化列的 postgres 更新表
- python - 在 for 循环中使用相应的 3D numpy 数组
- c# - 使用带有附件锁定文件的 SmtpClient.Send,即使在实现 Dispose() 之后也是如此
- sql - 我正在写一个标量函数,但我遇到了一些错误
- python-3.x - 如何使用 Python 3 使用来自另一个时区的格式指令将字符串转换为日期时间
- android - 我怎样才能发送`类
- ` 到 `ItemLiveData` 类构造函数?
- arrays - Prolog - 将文本文件中的二维数组加载到程序中