如何为React S3应用构建/部署Node.js AWS RDS后端及联动
AWS React+Node.js+RDS 架构部署实操指南
一、Node.js 后端部署(对接 RDS)
选项1:EC2 实例部署(完全可控)
- 实例配置:选择
t2.micro(免费额度内),配置安全组:开放3000端口(Node 默认服务端口),同时给 RDS 的安全组添加规则,允许当前 EC2 安全组的入站访问(保证后端能连数据库)。 - 环境搭建:登录 EC2(用 SSH 密钥),执行命令安装 Node.js 和 npm:
sudo apt update && sudo apt install nodejs npm -y - 代码上传:用 SCP 或 Git 克隆你的后端代码到 EC2,比如:
scp -i your-key-pair.pem ./backend/* ubuntu@<EC2公网IP>:/home/ubuntu/backend/ - RDS 连接配置:在 Node 代码中通过环境变量存储数据库信息(禁止硬编码),示例:
在 EC2 上设置环境变量,或者用const dbConfig = { host: process.env.DB_HOST, // RDS 控制台获取的端点 user: process.env.DB_USER, password: process.env.DB_PASSWORD, database: process.env.DB_NAME };.env文件配合dotenv中间件加载。 - 服务启动:用 PM2 守护进程避免 SSH 断开后服务停止:
npm install pm2 -g pm2 start app.js --name "backend-service" pm2 startup # 设置开机自启
选项2:Elastic Beanstalk 部署(简化运维)
这是 AWS 托管的 PaaS 服务,无需手动管理 EC2:
- 打包后端代码为 ZIP 包(包含
package.json) - 在 Elastic Beanstalk 控制台创建 Node.js 环境,上传 ZIP 包,平台会自动配置服务器、负载均衡等
- 在环境配置中添加 RDS 相关的环境变量,后端直接读取即可
二、React 前端与后端的 CRUD 连接
- 基础配置:在 React 代码中设置 API 基础地址,比如:
export const API_BASE_URL = 'http://<EC2公网IP>:3000'; // 用 Elastic Beanstalk 的话就是环境分配的域名,比如 http://your-app.elasticbeanstalk.com - 跨域问题解决:在 Node 后端安装
cors中间件并启用:npm install corsconst cors = require('cors'); app.use(cors()); // 生产环境可指定允许的前端域名,比如 app.use(cors({ origin: 'https://your-s3-cloudfront-domain.com' })) - CRUD 示例(用 Axios):
import axios from 'axios'; // 获取数据 export const fetchItems = async () => { const res = await axios.get(`${API_BASE_URL}/items`); return res.data; }; // 创建数据 export const createItem = async (itemData) => { const res = await axios.post(`${API_BASE_URL}/items`, itemData); return res.data; };
三、常见疑问解答
1. 是否需要 API Gateway?
不是强制,但生产环境强烈推荐:
- 核心价值:隐藏后端真实 IP,提供访问控制(API Key、IAM 认证)、限流、监控、缓存等能力,同时可以整合多个后端服务到统一端点。
- 测试环境可以直接用 EC2/Elastic Beanstalk 的地址访问,生产环境建议搭配 API Gateway 使用,甚至结合 CloudFront 做 CDN 和 WAF 防护。
2. Node.js 后端必须部署在 EC2 吗?
完全不需要,有多种部署选项:
- EC2:适合需要自定义服务器环境、安装特殊依赖的场景,自由度最高。
- Elastic Beanstalk:适合快速部署,无需关心服务器运维,AWS 自动管理扩容、负载均衡。
- Lambda + API Gateway:无服务器架构,按调用次数付费,适合流量波动大的场景,不用管服务器生命周期。
- ECS/EKS:容器化部署,适合微服务架构,将 Node.js 打包成 Docker 镜像后部署到容器集群。
3. CloudFormation 在架构中的作用?
CloudFormation 是 AWS 的**基础设施即代码(IaC)**工具,核心作用:
- 用 YAML/JSON 模板定义整个架构的所有资源(S3 桶、EC2、RDS、安全组、API Gateway 等),一键创建、更新、销毁整个环境,避免手动操作的疏漏。
- 保证多环境一致性:开发、测试、生产环境用同一个模板,配置完全对齐,避免"本地正常生产报错"的问题。
- 自动化运维:模板中可以定义资源的依赖关系、启动脚本、参数配置,减少重复的手动操作。
内容的提问来源于stack exchange,提问作者Joshua Foxworth
相关产品推荐
相关产品推荐

