部署在AWS Elastic Beanstalk的.NET 7应用无法连接AWS RDS SQL Server
解决AWS Elastic Beanstalk连接RDS SQL Server的问题
核心原因
Elastic Beanstalk的EC2实例在VPC内访问RDS时,使用的是私有IP地址,而非你看到的公网IP。直接添加EC2公网IP到RDS安全组入站规则里是无效的。
具体解决步骤
1. 获取Elastic Beanstalk环境的EC2安全组ID
- 登录AWS控制台,进入Elastic Beanstalk服务,找到目标应用环境
- 切换到配置标签页,找到实例配置项并点击编辑
- 在实例安全组栏,复制对应的安全组ID(格式类似
sg-xxxxxx)
2. 配置RDS安全组的入站规则
- 进入RDS服务,找到你的SQL Server实例,查看连接性标签页里的VPC安全组,点击进入该安全组
- 在入站规则中添加新规则:
- 类型选择
SQL Server(对应端口1433) - 源选择自定义,粘贴刚才复制的Elastic Beanstalk实例安全组ID
- 保存规则
- 类型选择
3. 额外验证项
- 确认RDS实例和Elastic Beanstalk的EC2实例处于同一个VPC内(同VPC是默认配置,跨VPC需额外调整网络架构)
- 检查连接字符串是否使用RDS的端点地址(格式通常为
your-db-name.xxxxxx.region.rds.amazonaws.com,1433),而非公网IP - 确认RDS实例的公有可访问性:同VPC下可设置为
否,关闭公网访问更安全;跨VPC访问才需设为是
排查小技巧
- 登录EB的EC2实例,执行
telnet your-rds-endpoint 1433测试端口连通性,验证安全组规则是否生效 - 可临时将EC2实例的私有IP添加到RDS安全组入站规则,测试是否能连通(但用安全组ID更灵活,EB自动扩容的新实例会自动继承权限)
内容的提问来源于stack exchange,提问作者Mediomondo
相关产品推荐
相关产品推荐

