我正在构建一个应用程序,允许用户上传图片并仅与他/她的朋友分享。
每个用户的内容都以其自己的文件夹名称存储在s3中,第4点所述的下载服务是必须调用的服务。不幸的是,这意味着我不能将此URL作为源分配给图像标签<img src="">
,因为授权令牌应在GET请求中发送。我不能公开用户文件夹的内容,因为只允许用户和他的朋友看到图像。当前的服务很快将成为瓶颈,我想避免这种情况。
解决此问题的推荐架构/设计是什么?
答案 0 :(得分:2)
您应该拥有一个仅生成S3预签名URL的服务,而不是使用从S3加载并返回整个图像文件的服务。然后,可以在您网站的<img src="">
标签中使用从该服务检索的URL。由于Web浏览器最终仍将直接从S3下载图像,同时仍然是安全的,因此性能将大大提高。
答案 1 :(得分:1)
下载图像的流程是这样的
用户调用GET请求下载图像
上述URL长时间无效,但您的图片受到保护。由于身份验证令牌是基于时间的,因此它可以满足您的要求,就像有人将图像设为私有/公开删除朋友一样。删除的图像,复制图像URL的粘贴等..