【发布时间】:2019-01-25 02:10:08
【问题描述】:
我已经解决了所有现有问题,但似乎无法满足我的要求。
我有一个带有 10000 个文件的 S3 private bucket,通过 Nodejs 服务器私下访问以在我的 Angular 应用程序中显示每页至少 25 个。
我发现了多种解决方案,这些解决方案在我看来似乎效率低下。
- 为文件生成预签名 URL。
- 通过 Nodejs API 从 S3 拉取图像
要显示10个或更多需要每次生成签名的Url,这是一个耗时的过程。并且使用 s3.getObject 方法通过 api 拉取图像给了我一个缓冲区数据,将其转换为 Base64 很难在客户端处理,并且获取每个都消耗时间。
这些是我不知道的任何解决方案吗?如何在不影响用户体验的情况下实施。
PS:我的 Bucket 是 private 不公开
【问题讨论】:
-
你的目标是什么?仅将内容保护给授权用户?或者您只想将图片从私有存储桶传送给您的网站用户?
-
为什么说生成签名 URL 是一个耗时的过程?即使有成千上万的事情要做(您不需要,因为每页只有 25 个),每个 URL 的时间大约为毫秒,您可以并行执行。
-
@JohnHanley 仅向授权用户保护内容
-
唯一的“安全”解决方案是生成预签名 URL。我还会使用带有预签名 URL 的 CloudFront 来交付内容。
-
考虑使用签名 cookie 的 ceskamx 回答。我忘记了这个选项。
标签: node.js angular amazon-web-services amazon-s3 aws-sdk