AWS 示例无服务器架构推荐

AWS simple serverless architecture recomendation

我正在学习网站结构,但我对这些概念和设计的数量感到困惑。

这就是我想要做的:

(使用 AWS)

Image: AWS serverless simple structure

53 号公路:DNS

CloudFront:CDN

website1.com/styles.css   ->  S3 /website1/styles.css
website1.com/robots.txt   ->  S3 /website1/robots.txt
website1.com/favicon.ico  ->  S3 /website1/favicon.ico

website1.com/             -> API Gateway
website1.com/api/*        -> API Gateway

S3:我保存的位置:syles.css、robots.txt和favicon.ico

API 网关:请求处理程序。

website1.com/       ->  Lambda (node.js)
website1.com/api/*  ->  Lambda (API)

Lambda (node.js):我想使用 Node.js 实现无服务器服务器端渲染 React 应用程序。此应用调用 API 以获取一些数据。

Lambda (API): API

RDS:PostgreSQL

问题

1) 我的结构正确吗?或者还有其他更好的网站服务器设计吗? (我想保存服务器端渲染)

2) 我可以在此结构中添加另一个网站吗?或者我需要为 AWS 的每个元素生成一个新实例?

您可以使用此设置,但是...我不建议对服务器端呈现的网站使用 API 网关。问题是,如今几乎没有人在不使用已建立的框架来选择他们选择的语言的情况下编写服务器端呈现的网站,并且实际上没有如何使用这些框架的好方法,例如。在 Node 的情况下使用 ExpressJS,使用 Lambda。大多数情况下,你需要自己写代码,这无异于重新发明轮子,更何况还容易出错。

Lambda 函数应该是小块代码,以便于维护并减少它的执行时间,这等于降低成本。另请注意,lambda 函数大小有限制。

常见设置是使用托管在 S3 上的 SPA 和 API 网关与 Lambda 用于后端逻辑。如果您需要使用服务器端渲染,那么最好使用一些其他服务,这些服务允许您以 "old" 时尚的方式(EC2、Beanstalk、ECS、EKS...)编写后端应用程序,使用提到的框架。

是的,您可以在此设置中包含任意数量的网站。您可以直接在 API 网关上基于 URL 进行路由,为不同的网站提供单独的资源,或者您可以在 CloudFront 上进行路由,每个网站有一个 API 网关。