我是Amazon S3的新手,我想建立一个可能不存在的解决方案。
我必须构建一个用户登录和下载文件的Web应用程序(Java或PHP后端)。 Web服务器(Tomcat或Apache)验证用户并允许从Amazon S3下载。 当我使用CMS时,文件很小,请求很少。所以,流程是:
Client (User) > Server (user validation) > CMS (get file) > Server > Client (User)
现在,文件更大,我想获得下一个流程:
Client (User) > Server (user validation) > Amazon S3 > Client (User)
我的目标是提高服务器的性能,避免用户获取文件时出现过多的文件流量。 可能吗?
我的第一种方法(还没有实现!)是从我的服务器到Amazon S3的sendredirect:
用户请求/file1
=>服务器将/file1
“翻译”为/company.s3.amazon/mybucket/file1.pdf
并将sendredirect执行到Amazon S3链接。
通过这种方法,我认为我无法验证IAM用户(我不使用任何API),但我也认为我可以通过服务器IP地址的Bucket Policy过滤来保护内容。
感谢。
答案 0 :(得分:1)
我建议使用Pre-Signed URL,这是一种提供存储在Amazon S3中的临时访问私有对象的方法。
预签名网址包含:
预先签名的网址可以从几行代码中生成,并且只有在将GET请求发送到Amazon S3时才会评估。
当您的应用程序(在服务器上)确定用户有权访问该文件时,它可以生成预先签名的URL并将其作为网页的一部分返回(例如,超链接)。当用户点击该链接时,该文件将直接从S3 提供。到期后,URL将不再提供对文件的访问权。