正在提供3个Web应用程序的当前AWS配置:
这里ELB正在处理SSL卸载。当前,Node JS应用程序已部署在EC2计算机上。它负责处理后端API以及为3个SPA react Webapp提供静态文件。
我们希望通过分离前端和后端来对此进行改进。我们正在考虑将3个SPA react Webapp移至单个S3存储桶中。每个人都将坐在此S3存储桶上的自己的目录中。 S3存储桶将配置为静态网站托管。我们仍将具有用于服务后端API的节点JS实例。
我们希望避免使用云前端将流量从ELB路由到S3,因为它们是内部Web应用程序,来自特定区域的用户数量有限。
而且lambda函数还必须根据规则来路由流量:
/ ui / site3 / *->将流量路由到S3存储桶site3文件夹
是的,您可以实现Lambda来从S3检索内容。您只需要从调用事件中提取请求路径,将其转换为您正在使用的任何S3位置,检索文件,并将其打包在响应中即可。
BUT
您只能使用1MB的响应数据,因此,如果您有任何图像或其他大文件,将无法提供它们(doc)。
并且您将为检索到的每个文件支付Lambda调用成本,这肯定很小。
而且您将增加检索每个文件的时间,这将降低您的网络应用的速度。多少取决于您要加载的静态资产。
一个更好的解决方案,如果您想拆分静态和动态内容,并且不想使用CloudFront,则可以在另一个端口上启动另一个Node.JS服务器,并在其上设置ALB位置。
应用程序负载平衡器已经支持path based routing。但是不支持将S3存储桶作为有效目标,因此您需要一个Lambda来回显内容。
所以