【发布时间】:2020-05-21 16:32:10
【问题描述】:
服务于 3 个 web 应用程序的当前 AWS 配置 -
这里 ELB 负责 SSL 卸载。目前 Node JS 应用程序部署在 EC2 机器上。它负责处理后端 API 并为 3 个 SPA react webapps 提供静态文件。
我们希望通过分离前端和后端来改进这一点。我们正在考虑将 3 个 SPA react webapps 移动到单个 S3 存储桶中。每个都将位于此 S3 存储桶上自己的目录中。 S3 存储桶将配置为静态网站托管。我们仍将拥有用于服务后端 API 的节点 JS 实例。
我们希望避免使用云端将流量从 ELB 路由到 S3,因为这些是内部 web 应用程序,来自特定区域的用户数量有限。
- 我们能否使用 lambda 函数将流量从 ELB 路由到 EC2 上的 Node JS 应用程序以及从 ELB 到 S3 存储桶?如果可能的话,采用这种方法在性能和成本方面是否是一种好的做法?
lambda 函数还必须根据规则路由流量 -
- /api/* --> 将流量路由到node js app
- /ui/site1/* --> 将流量路由到 S3 存储桶 site1 目录
- /ui/site2/* --> 将流量路由到 S3 存储桶 site2 目录
-
/ui/site3/* --> 将流量路由到 S3 存储桶 site3 目录
- 我们可以在 lambda 函数中编写这样的规则吗?
【问题讨论】:
-
我肯定会为此使用 Cloudfront。它不仅可以满足您的需求,还可以降低您的 S3 带宽成本。
-
您说您希望对此进行改进。您具体在寻找哪些改进?只是从您的 Web 服务器卸载静态资产的交付?您是否考虑过诸如 varnish 之类的 HTTP 缓存?
-
@jarmod 我不建议将清漆放在 S3 前面。这确实违背了 S3 IMO 的目的。
-
@jordanm 同意,但我指的是缓存来自源 Web 服务器的 HTTP 内容。资产尚未在 S3 中,因此此时不建议迁移到 S3。当然,S3/CloudFront 将是典型的推荐,但我提供了一个替代方案,因为我希望避免使用 CloudFront。
-
@jordanm Cloudfront 会将我的应用程序公开吗?还是我仍然可以将其设为私有?使用 cloudfront,我需要为每个 webapps 创建 seaparte 分发。
标签: amazon-web-services amazon-s3 aws-lambda