首页 > 解决方案 > 通过特定网站查看对象并将其上传到私有 Amazon S3 存储桶

问题描述

我正在使用带有 Tutor LMS 插件的 WordPress 构建课程市场。人们需要付费才能访问课程,因此只有客户才能看到他们购买的材料(视频和 PDF 文件)。

它们不能显示给非客户。

我将所有文件存储在 Amazon S3 私有存储桶上。服务器位于 Amazon EC2 上。

我还需要使用我的前端将文件上传到此存储桶。

什么是最好的解决方案?我该怎么做?

标签: wordpressamazon-web-servicesamazon-s3

解决方案


您可以为您的 EC2 创建一个实例角色,为其授予使用 S3 存储桶所需的权限,在后端您可以使用 AWS 开发工具包来使用该存储桶,而该存储桶又将拥有您在实例角色中设置的权限。当客户端登录时,他们将能够访问他们所需的文件,而未登录的用户将无法访问文件。您将需要在您的代码上实现这一点。

另一种方法是为您的客户生成一个预签名的 URL,让他们临时访问他们的文件。预签名的 URL 在 x 时间后过期,客户端需要生成新的 URL。

签名 URL 始终是最佳选择,因为您不必为从应用程序层上传和下载的文件流进行管理。

还有一项增强功能,我们可以在 S3 前面使用 CloudFront,并使用云端签名 URL 上传内容,使用云端签名 URL 下载内容,这将提高您的性能和安全状况,因为任何人都无法公开访问 S3 .


推荐阅读