如何解决Laravel Vapor连接AWS RDS的安全组配置超时问题
排查Laravel Vapor连接AWS RDS超时问题
可能遗漏的配置项
- 检查Vapor安全组的出站规则:安全组是双向控制的,你仅配置了RDS安全组的入站允许,但Vapor的专属安全组需要允许出站流量到RDS的3306端口(或放宽到允许所有出站流量到RDS安全组/VPC CIDR)。自定义安全组不会默认开放所有出站,需手动添加规则。
- 验证子网路由表的本地路由:确认Vapor Lambda所在子网的路由表中,存在指向VPC内部CIDR的
local路由(例如10.0.0.0/16 -> local)。若该路由被误删,Lambda将无法访问同VPC内的RDS实例。 - 检查网络ACL配置:网络ACL是无状态的,需同时配置入站和出站规则:
- RDS所在子网的网络ACL:允许来自Vapor子网CIDR的TCP 3306入站流量,同时允许TCP 1024-65535(客户端随机端口)的出站返回流量。
- Vapor所在子网的网络ACL:允许TCP 3306出站到RDS子网CIDR,同时允许TCP 1024-65535的入站返回流量。
- 确认RDS端点配置:确保Vapor环境变量中的
DB_HOST使用RDS的私有端点(而非公网IP)。若RDS部署在私有子网,公网IP无法被同VPC内的Lambda访问。 - 检查RDS子网组覆盖范围:确认RDS实例的子网组包含至少一个与Vapor Lambda重叠的子网,避免跨子网路由导致的连通性问题。
建议查看的日志
- Lambda函数日志:登录AWS CloudWatch控制台,找到Vapor对应的Lambda函数日志组,搜索
timeout或database关键词,查看连接超时的具体堆栈信息。 - RDS数据库日志:在RDS控制台的“日志和事件”中,查看错误日志和慢查询日志,确认是否有来自Vapor Lambda的连接尝试记录,以及是否存在连接拒绝或超时的细节。
- Vapor应用日志:在本地执行
vapor logs命令,查看应用层面的数据库连接错误日志,确认是否有DNS解析失败、路由不可达等更具体的报错信息。
内容的提问来源于stack exchange,提问作者charliefortune
相关产品推荐
相关产品推荐

