首页 > 解决方案 > 是否可以使用 AWS lambda 将流量从 ELB 路由到 S3 存储桶?

问题描述

服务于 3 个 webapps 的当前 AWS 配置 -

在此处输入图像描述

这里 ELB 负责 SSL 卸载。目前 Node JS 应用程序部署在 EC2 机器上。它负责处理后端 API 以及为 3 个 SPA react webapps 提供静态文件。

我们希望通过分离前端和后端来改进这一点。我们正在考虑将 3 个 SPA react webapps 移动到单个 S3 存储桶中。每个都将位于此 S3 存储桶上自己的目录中。S3 存储桶将配置为静态网站托管。我们仍将拥有用于服务后端 API 的节点 JS 实例。

在此处输入图像描述

我们希望避免使用云端将流量从 ELB 路由到 S3,因为这些是内部 web 应用程序,来自特定区域的用户数量有限。

  1. 我们可以使用 lambda 函数将流量从 ELB 路由到 EC2 上的 Node JS 应用程序以及从 ELB 到 S3 存储桶吗?如果可能的话,采用这种方法在性能方面和成本方面是一种好的做法吗?

此外,lambda 函数必须根据规则路由流量 -

标签: amazon-web-servicesamazon-s3aws-lambda

解决方案


是的,您可以实现从 S3 检索内容的 Lambda。您只需从调用事件中提取请求路径,将其转换为您正在使用的任何 S3 位置,检索文件并将其打包到响应中。

您的响应数据限制为 1MB,因此如果您有任何图像或其他大文件,您将无法提供它们 ( doc )。

而且您将为检索到的每个文件支付 Lambda 调用费用,这无疑是很小的。

而且您将增加检索每个文件的时间,这会降低您的网络应用程序的速度。多少取决于您正在加载多少静态资产。

如果您想拆分静态和动态内容并且不想使用 CloudFront,更好的解决方案是在不同的端口上启动另一个 Node.JS 服务器,并将 ALB 指向它。


推荐阅读