无需Lambda:如何将AWS API Gateway连接至EC2上的RDS MySQL?
可行解决方案
方案1:在现有EC2实例上部署API服务
- 在EC2上搭建轻量API框架(如Python Flask、Node.js Express),直接编写代码连接MySQL数据库
- 配置EC2安全组,开放API服务端口(如80/443),若需HTTPS可通过Let's Encrypt免费配置证书
- 需为API添加身份验证(API Key、JWT等),同时限制EC2安全组的访问来源IP,避免数据库暴露风险
- 优势:无需额外AWS服务权限,复用现有EC2资源,开发维护成本低
方案2:使用AWS App Runner托管API服务
- 将连接MySQL的API代码打包为容器镜像,上传至AWS ECR私有仓库
- 通过App Runner部署该镜像,在配置中填入数据库连接串、用户名密码等环境变量
- 调整RDS安全组,允许App Runner所在VPC的网络访问
- 优势:完全托管式服务,自动处理扩容、负载均衡与HTTPS,权限配置灵活度高于Lambda
方案3:基于ECS Fargate部署API容器
- 把API代码容器化后上传至ECR,创建ECS集群并使用Fargate启动任务
- 配置应用负载均衡(ALB)暴露API服务,同时在任务配置中注入数据库连接环境变量
- 确保RDS安全组允许Fargate所在VPC的流量访问
- 优势:适合高并发场景,无需管理底层服务器,资源弹性伸缩可控
方案4:采用第三方API网关服务
- 选择Kong、Apigee等第三方网关,部署在EC2或云主机上,作为请求入口转发至连接MySQL的API服务
- 这类网关自带身份验证、流量限流、监控告警等成熟功能,不受AWS API Gateway的权限限制
- 注意:需自行维护网关服务的可用性与安全防护
通用配置要点
- 所有连接MySQL的服务,必须确保RDS安全组开放对应来源的访问权限
- 数据库敏感信息(连接串、密码)禁止硬编码,优先使用环境变量或AWS Secrets Manager(若有权限)存储
- 无论采用哪种方案,都必须为API添加身份校验机制,防止未授权访问导致数据泄露
内容的提问来源于stack exchange,提问作者andryne
相关产品推荐
相关产品推荐

