本文介绍了AWS:使用API网关代理EC2实例中服务的前端和后端API端点是否是好做法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在AWS中构建我的应用程序。

我已经在EC2实例中部署了我的Reactjs前端项目:172.0.0.1:80

我还在另一个EC2实例中部署了运行多个API端点的TypeScript/Express JS后端服务:172.0.0.2:3000

172.0.0.1172.0.0.2是EC2实例的私有网络内网IP地址。

我正尝试将AWS API Gateway用于反向代理目的,但我不确定这是否是一种良好的做法,或者通常情况下这是使用AWS云工具的好方法。详情如下:

  • 我已将我的自定义域配置到API网关,以便对www.myapp.com的任何访问都定向到API网关。

  • 如果用户在其浏览器中输入urlwww.myapp.com,API Gateway会将http GET请求代理到172.0.0.1:80

  • 当用户与前端交互时,会触发GET/PUT/POST请求,目标URL都是www.myapp.com/api/[xxx]模式。例如:www.myapp.com/api/userwww.myapp.com/api/photos、.

    API网关将这些请求代理给172.0.0.2:3000

  • 我还希望将AWS Cognito服务与API网关集成以进行身份验证,以便用户可以登录/注销。

现在,这样使用API网关好吗?

这是在AWS云上托管应用的正确方式吗?

推荐答案

这似乎是合理的方法。这是一个有点固执己见的问题,因为良好的实践和恰当的方法是主观的。API Gateway非常灵活,允许许多使用模式,这些使用模式可以是";良好的做法&,也可以以适当的方式&q;完成,但仍然有很大的不同。

这就是说,这种方法似乎是合理的,但是您也许能够以不同的方式托管前端项目以提高效率。请考虑Building server-side rendering for React in AWS Lambda中所示的方法:

在该方法中,前端是静电的,并呈现在客户端上,因此使用S3存储静电文件并使用CloudFront分发这些文件是一种很好的方法。它显示了由lambda处理的动态后端Bind,这具有无服务器的优势,但它也可以是EC2。如果您的前端代码不是静电,或者您希望来自ec2实例,您可以这样做,并按照您概述的那样使用API Gateway。

与这张图片相比,我喜欢您的方法的一点是,客户端为应用程序只有一个域,而API Gateway负责路由到正确的端点。这样就对最终用户隐藏了一些实现细节。

这篇关于AWS:使用API网关代理EC2实例中服务的前端和后端API端点是否是好做法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

05-19 11:21