能否在AWS Elastic Beanstalk上分别部署前后端并通过CodePipeline发布?
解答
完全可以实现该部署方案,Elastic Beanstalk 和 CodePipeline 原生支持前后端分离的 Node.js 项目部署需求,具体实现逻辑和注意事项如下:
Elastic Beanstalk 前后端分别部署方案
- 为前端、后端项目分别创建独立的 Elastic Beanstalk 应用环境,运行时均选择 Node.js 平台即可
- 前端环境配置公网可访问的域名,开放 80/443 端口对外提供服务;后端环境建议配置为仅允许前端环境的安全组访问,不对外暴露公网入口,避免直接接收外部请求
- 前端 proxy 模块的转发规则需要将目标地址修改为后端 Elastic Beanstalk 环境的地址,同 VPC 部署时建议使用私有域名,既降低公网带宽消耗也能提升请求安全性,注意同步调整跨域配置适配两端的域名规则
CodePipeline 自动化部署配置方案
- 可根据代码托管情况选择配置方案:前后端代码存放在不同仓库时,分别创建两条独立的 CodePipeline 流水线;前后端代码存放在同一仓库的不同目录时,可在同一条流水线中设置并行的两个部署阶段,分别对应前后端的构建、部署流程
- 构建阶段使用 CodeBuild 服务,两个 Node.js 项目分别配置对应的构建命令、产物输出规则,你可以在项目根目录下分别添加
buildspec.yml文件定义标准化构建流程 - 部署阶段选择 Elastic Beanstalk 作为部署目标,分别关联提前创建好的前端、后端 Elastic Beanstalk 环境即可,代码推送后会自动触发流水线完成全量部署
注意事项
- 建议前后端环境部署在同一个 AWS VPC 内,前端 proxy 转发后端请求时走内网链路,请求延迟和安全性都更有保障
- 如果你使用 Elastic Beanstalk 内置的负载均衡服务,注意在负载均衡关联的安全组规则中放行对应端口的访问请求
- 前端 proxy 配置不要硬编码后端服务地址,可在 Elastic Beanstalk 环境变量中配置后端地址参数,前端服务启动时读取该环境变量动态生成转发规则,适配不同部署环境的需求
内容的提问来源于stack exchange,提问作者Jude Saldanha
相关产品推荐
相关产品推荐

