Spring Boot+MySQL项目AWS CICD构建时出现Communications link failure错误
问题排查与解决方案
异常信息:
com.mysql.cj.jdbc.exceptions.CommunicationsException: 通信链路失败
最后一次成功向服务器发送数据包是在0毫秒前,驱动尚未收到来自服务器的任何数据包。
1. 修正CodeBuild的VPC网络配置
- 若你的MySQL是部署在私有VPC内的RDS实例,必须将CodeBuild项目加入与RDS相同的VPC,且选择和RDS互通的私有子网,CodeBuild默认不关联用户私有VPC,走公网无法访问私有网络内的数据库。
- 确认CodeBuild关联的安全组出站规则开放了3306端口(MySQL默认端口)的访问权限,同时RDS关联的安全组入站规则允许CodeBuild安全组访问3306端口。
2. 核对CodeBuild的数据库配置
- 确认CodeBuild环境变量中配置的数据库地址、端口、账号、密码和你手动部署到Elastic Beanstalk时使用的配置完全一致,避免出现内网/公网地址填错的问题。
- 若RDS没有开启公网访问,必须在CodeBuild中填写RDS的VPC内网Endpoint,不能填公网访问地址。
3. 跳过CodeBuild阶段的数据库连接(可选方案)
如果你的CICD流程中CodeBuild阶段仅需要完成代码编译、打包、不依赖真实数据库的单元测试,可以通过以下方式跳过数据库连接校验,避免不必要的生产数据库访问:
- 打包时添加启动参数覆盖数据源配置:
mvn package -Dspring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration - 单独为测试环境配置H2内存数据库,无需连接真实MySQL
4. 其他检查项
- 确认RDS实例处于正常运行状态,无重启、维护、资源占满等异常
- 检查VPC网络ACL规则,未拦截CodeBuild所属子网到RDS所属子网的3306端口流量
- 确认CodeBuild运行时没有配置错误的代理,导致数据库请求被拦截
内容的提问来源于stack exchange,提问作者Bhavin Panchani
相关产品推荐
相关产品推荐

