Lambda连接Postgres(RDS)时出现超时问题求助
Lambda连接RDS Postgres超时排查方案
按优先级排查的核心点
- 安全组入站规则检查:
哪怕Lambda和RDS用了同一个安全组,也得确认这个安全组的入站规则里,有没有允许自身(源选sg-#####17956464c22a)访问Postgres默认端口5432(TCP协议)。安全组默认拒绝所有入站流量,同组资源也得显式放行,这是最常见的超时原因。 - RDS子网与公网配置:
确认RDS部署在私有子网,且公有可访问性设为否——开公网访问反而可能因为路由冲突导致超时。同时检查RDS所在子网的路由表,确保能和Lambda所在子网互通。 - Lambda权限与子网配置:
检查Lambda的执行角色有没有附加AWSLambdaVPCAccessExecutionRole权限,没有的话Lambda连不上VPC内的资源;另外确认Lambda的子网和RDS在同一个VPC内,且子网路由表能访问RDS子网。 - 端点与端口正确性:
核对Lambda代码里的RDS端点是私有端点(不是公网地址),端口是5432(或你自定义的Postgres端口),别写错地址或端口。 - VPC DNS配置:
检查VPC的enableDnsSupport和enableDnsHostnames是否都设为是,否则Lambda可能解析不了RDS的私有端点,导致连接超时。 - 连通性测试:
在同VPC同安全组的EC2实例上装Postgres客户端,执行命令psql -h <RDS私有端点> -p 5432 -U <数据库用户名> -d <数据库名>测试连接。如果EC2也连不上,问题在RDS或安全组;如果EC2能连,问题出在Lambda的配置(权限、子网、角色)。
快速试错步骤
- 给安全组添加入站规则:源选当前安全组
sg-#####17956464c22a,端口5432,TCP协议。 - 确认Lambda执行角色附加了
AWSLambdaVPCAccessExecutionRole策略。 - 开启VPC的DNS支持和主机名解析。
内容的提问来源于stack exchange,提问作者BENBUN Coder
相关产品推荐
相关产品推荐

