AWS Lambda连接RDS MSSQL返回[ODBC Driver 17]登录超时如何排查
AWS Lambda连接RDS MSSQL超时问题排查方案
1. 网络配置排查
- 确认Lambda是否部署在和RDS同一个VPC下:如果RDS未开启公网访问,Lambda必须挂载到RDS所在VPC的子网中,否则默认运行在AWS公共网络环境的Lambda无法访问私有VPC内的RDS资源
- 确认Lambda VPC权限:Lambda的执行角色必须附加
AWSLambdaVPCAccessExecutionRole托管策略,否则无法正常挂载到VPC子网,导致网络不通 - 确认RDS安全组入站规则:本地PyCharm能访问是因为你的本地公网IP被加入了RDS安全组的入站放行规则,需额外在RDS安全组中添加入站规则,源为Lambda的安全组ID,放行TCP协议1433端口(MSSQL默认端口),无需配置固定IP
2. 运行环境依赖排查
- 确认Lambda层是否正确打包了依赖:默认Python Lambda运行环境没有预装
pyodbc库和ODBC Driver 17 for SQL Server驱动,需将两个依赖共同打包到Lambda层中部署 - 可在代码开头添加
print(pyodbc.drivers()),调用Lambda后查看日志中是否存在ODBC Driver 17 for SQL Server条目,确认驱动正常加载
3. 端点配置排查
- 确认代码中
server参数使用的是RDS的VPC私有端点还是公网端点:如果Lambda和RDS同VPC,直接使用私有端点即可,不需要走公网链路 - 如果Lambda挂载到了VPC的公有子网,且使用RDS公网端点访问,会因为公有子网内的Lambda没有公网出口IP导致连接失败,需将Lambda切换到私有子网并配置NAT网关,或直接改用RDS私有端点访问
临时验证方法
可临时将RDS安全组入站规则添加0.0.0.0/0放行1433端口,测试Lambda是否能正常连接,如果连接成功则可确定是安全组配置问题,测试完成后立刻删除该规则避免安全风险。
内容的提问来源于stack exchange,提问作者HKeys34
相关产品推荐
相关产品推荐

