Amazon web services AWS简单无服务器架构推荐

Amazon web services AWS简单无服务器架构推荐,amazon-web-services,web,server,serverless,infrastructure,Amazon Web Services,Web,Server,Serverless,Infrastructure,我正在学习网站的结构,我被大量的概念和设计弄糊涂了 这就是我想做的: (使用AWS) 路由53:DNS 云锋: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/

我正在学习网站的结构,我被大量的概念和设计弄糊涂了

这就是我想做的: (使用AWS)

路由53:DNS

云锋: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交互。此应用程序调用API以获取一些数据

Lambda(API):API

RDS:PostgreSQL

问题: 1) 我的结构正确吗?或者还有其他更好的网站服务器设计吗?(我希望保留服务器端渲染)


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

您可以使用此设置,但。。。我不建议对服务器端呈现的网站使用API网关。问题是,现在几乎没有人在编写服务器端呈现的网站时不使用已建立的框架作为其选择的语言,而且真的没有很好的方法来使用这些框架,例如在Node中使用ExpressJS和Lambda。在大多数情况下,您需要编写自己的代码,这相当于重新发明一个轮子,更不用说这是多么容易出错

Lambda函数应该是小块代码,以便于维护,并减少执行时间,这相当于降低成本。还要注意,lambda函数的大小有一个限制

常见的设置是使用托管在S3和API网关上的SPA以及Lambda作为后端逻辑。如果您需要使用服务器端呈现,那么最好使用其他服务,它允许您使用上述框架以“老式”的方式(EC2、Beanstalk、ECS、EKS…)编写后端应用程序


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

非常感谢你的回答,让我结束我的问题。然后,您建议我在这个结构中用beanstalk替换node.js lambda?(保持在api网关下)或直接将其置于CloudFront?下?。我想用lambda作为前端,而不是EC2,因为我认为它便宜而且更易于维护。我建议在服务器端呈现的网站上使用Beanstalk而不是lambda。将EB直接放在CloudFront下,无需将其放在API网关下。如果使用得当,Lambda更便宜,但这也取决于项目的规模。在服务器端渲染中使用lambda有太多的麻烦,但在spa中它会大放异彩。我并不是说这是不可行的,但我认为这是不值得的。我认为,如果考虑到不能使用后端框架这一事实,维护起来并不容易。谢谢,问题已经解决