将Node后端部署至AWS S3后,前端调用端点URL及API网关配置疑问
问题解答
核心误区先明确
S3只能托管静态资源(比如你的React打包文件),根本没法直接运行Node.js后端应用,所以你不能把Express服务传到S3来处理请求,这是行不通的。
关于你公司的execute-api格式URL
这种地址就是AWS API Gateway的端点,说明你们公司的后端是用了Serverless架构:把Node服务打包成Lambda函数,然后通过API Gateway来接收前端请求,再路由到Lambda执行逻辑;或者后端部署在EC2/ECS这类计算资源上,API Gateway作为统一入口转发请求。
你的Node后端部署方案&前端调用URL
根据你的需求,推荐这几种可行方案:
- 方案1:和公司架构对齐(Lambda+API Gateway)
把你的Express应用改造适配Lambda(或者用serverless-http这类工具快速转换),部署成Lambda函数后,配置API Gateway作为触发器。此时前端调用的URL就是API Gateway生成的类似https://xxxxxx.execute-api.us-east-2.amazonaws.com/dev的地址,和你公司的格式完全一致。 - 方案2:部署到EC2/ECS/EBS
把Node应用部署到这些能运行后端服务的计算资源上,前端可以直接调用EC2的公网IP+服务端口(比如http://xxx.xxx.xxx.xxx:3000),或者EBS分配的xxx.elasticbeanstalk.com域名。如果想要和公司格式统一,也可以在前面加API Gateway,让它转发请求到你的EC2/ECS服务。
关于API Gateway的必要性
如果要实现类似你公司的那种统一端点格式,或者用Serverless架构,必须配置API Gateway来做请求路由、鉴权、流量控制等。如果直接用EC2/EBS的地址,虽然可以不用API Gateway,但缺少了统一入口的管理能力,也和你公司的架构不一致。
内容的提问来源于stack exchange,提问作者Joshua Foxworth
相关产品推荐
相关产品推荐

