我目前正在使用PHP中的Yii框架编写应用程序,该应用程序存储由应用程序用户上载的大量文件。我决定,由于文件数量将不断增加,使用Amazon S3存储这些文件将是有益的,并且在请求时,服务器可以检索文件并将其发送给用户。 (服务器是同一区域中的EC2实例)
由于文件都是机密文件,因此在允许用户接收文件之前,服务器必须验证用户的身份及其凭据。有没有办法在这种情况下直接从S3将文件发送给用户,或者我是否必须先将数据提取到服务器然后再将其提供给用户。
如果是,有没有办法在本地服务器上缓存最近上传的文件,这样就不必去s3查找文件了。在大多数情况下,多个客户端将重复请求最近上载的文件。
非常感谢任何帮助!
答案 0 :(得分:1)
经过身份验证的客户端可以在向客户端显示页面/网址之前,通过在服务器上签署相应的URL来直接从S3下载文件。
有关详细信息,请参阅:http://s3.amazonaws.com/doc/s3-developer-guide/RESTAuthentication.html
请注意,对于机密文件,您可能还需要考虑服务器端/客户端加密。最后,对于静态文件(例如图像),您可能还需要设置适当的缓存标头。
答案 1 :(得分:0)
使用AWS Cloud Front为这些静态文件提供服务。而不是将文件发送给用户,而是将链接发送给文件。链接需要是云前端链接&不直接链接到S3存储桶。
这样做的好处是可以在服务器上保持较低的负载,并将文件缓存到用户附近以获得更好的性能。