使用 AWS S3 和 Lambda 创建缩略图,然后加载它们
Create thumbnails using AWS S3 & Lambda and then load them
我正在构建一个 React 网络应用程序,它允许用户上传图片然后呈现缩略图,就像 facebook 聊天一样。但我不确定在渲染它们之前解决上传-调整大小-生成缩略图时间差距的最佳做法是什么。
工作流程如下:
1) 用户上传一张图片到S3,存储在bucket1
2) Lambda函数调用,获取新上传的图片并进行缩放工作,然后将缩略图存储在bucket2中
3) 在浏览器中呈现的缩略图(客户端)。这里有点棘手 - 我只是硬编码 img url 因为它是可预测的,但是,它需要一段时间才能可用(生成过程)。
但我不知道如何让 lambda 在缩略图成功生成并准备好呈现时通知浏览器。在生产中,可能是 lambda 先告诉节点服务器,然后节点服务器告诉客户端;但在开发模式下,这似乎是不可能的,因为我 运行 是我自己笔记本电脑上的快速服务器。 lambda 应该以适当的方式进行通知还是有其他更好的解决方案?
AWS Lambda 不能"notify the browser",因为它是一个独立触发的进程,与网页请求没有关系。
一种选择是将网页编码为继续尝试下载图像。您需要一些花哨的 JavaScript/node 代码来检查图像是否已成功下载,然后在必要时重试。
顺便说一下,还有一些服务可以即时调整图像的大小,因此您不必创建自己的缩略图:
我正在构建一个 React 网络应用程序,它允许用户上传图片然后呈现缩略图,就像 facebook 聊天一样。但我不确定在渲染它们之前解决上传-调整大小-生成缩略图时间差距的最佳做法是什么。
工作流程如下:
1) 用户上传一张图片到S3,存储在bucket1
2) Lambda函数调用,获取新上传的图片并进行缩放工作,然后将缩略图存储在bucket2中
3) 在浏览器中呈现的缩略图(客户端)。这里有点棘手 - 我只是硬编码 img url 因为它是可预测的,但是,它需要一段时间才能可用(生成过程)。
但我不知道如何让 lambda 在缩略图成功生成并准备好呈现时通知浏览器。在生产中,可能是 lambda 先告诉节点服务器,然后节点服务器告诉客户端;但在开发模式下,这似乎是不可能的,因为我 运行 是我自己笔记本电脑上的快速服务器。 lambda 应该以适当的方式进行通知还是有其他更好的解决方案?
AWS Lambda 不能"notify the browser",因为它是一个独立触发的进程,与网页请求没有关系。
一种选择是将网页编码为继续尝试下载图像。您需要一些花哨的 JavaScript/node 代码来检查图像是否已成功下载,然后在必要时重试。
顺便说一下,还有一些服务可以即时调整图像的大小,因此您不必创建自己的缩略图: