我正在构建一个Web应用程序,我正在考虑使用Amazon S3来存储用户上传 .
我担心的是,我不希望用户A看到他上传的文件的下载链接是urltoMyS3 / doc1234.pdf并尝试urltoMyS3 / doc1235.pdf并获取另一个用户文档 .
我能想到的唯一方法就是只允许Web应用程序连接到S3,然后检查用户是否可以访问Web应用程序上的文件,让Web应用程序下载文件,然后提供服务给客户 . 此方法的问题是应用程序必须首先下载文件,并且不可避免地会降低用户的下载过程 .
如何通常使用Amazon S3处理用户文件?或者它通常不会在文件不公开的情况下使用?还有其他类似的服务吗?
谢谢
3 回答
您可以实现Query String Authentication,这将解决您的问题 .
您可以通过生成相应的链接来执行此操作,请参阅以下内容
https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html#RESTAuthenticationQueryStringAuth
如果时间限制身份验证不起作用(如其他答案中所建议) . 您可以考虑实现类似s3fs的东西,将S3存储桶作为驱动器安装在Web应用程序服务器上 . 通过这种方式,您可以简单地进行身份验证,然后直接将文件提供给用户,而无需他们知道该文件位于S3中 . 同样,您只需将上传的文件直接写入此s3fs挂载即可 .
S3fs还允许您在计算机上配置S3目录的本地缓存,以便更快地访问 .
这在集群Web服务器环境中也可以很好地工作,因为您可以让每个服务器挂载s3fs驱动器并独立执行/读取/写入 .
A link with more info