0

我目前正在使用 PHP 中的 Yii 框架编写一个应用程序,该应用程序存储应用程序用户上传的大量文件。我决定,由于文件的数量将不断增加,使用 Amazon S3 存储这些文件是有益的,并且在请求时,服务器可以检索文件并将其发送给用户。(服务器是同区的EC2实例)

由于这些文件都是机密文件,因此服务器必须在允许用户接收文件之前验证用户的身份及其凭据。在这种情况下,有没有办法直接从 S3 将文件发送给用户,或者我必须先将数据拉到服务器,然后再将其提供给用户。

如果是的话,有什么办法可以将最近上传的文件缓存在本地服务器上,这样就不用去s3找文件了。在大多数情况下,最近上传的文件会被多个客户端重复请求。

任何帮助将不胜感激!

4

2 回答 2

1

经过身份验证的客户端可以通过在向客户端显示页面/url 之前在服务器上签署适当的 URL 来直接从 S3 下载文件。

有关更多信息,请参阅:http ://s3.amazonaws.com/doc/s3-developer-guide/RESTAuthentication.html

请注意,对于机密文件,您可能还需要考虑服务器端/客户端加密。最后,对于静态文件(例如图像),您可能还需要设置适当的缓存头。

于 2013-03-10T13:29:40.303 回答
0

使用 AWS Cloud Front 来处理这些静态文件。与其将文件发送给用户,不如向他们发送文件的链接。链接需要是云前端链接,而不是指向 S3 存储桶的直接链接。

这样做的好处是可以保持服务器上的低负载以及缓存靠近用户的文件以获得更好的性能。

此处提供更多详细信息通过 CloudFront 提供私有内容

于 2018-04-17T11:22:18.863 回答