You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Lambda访问Amazon RDS数据库实例时出现timeout errors如何解决

Lambda连接VPC内RDS超时排查方案

优先级最高的排查点

  • 先确认VPC的DNS配置是否正确:检查你使用的默认VPC是否同时开启了enableDnsHostnames和enableDnsSupport两个参数,只有这两个参数都开启的前提下,VPC内的服务才能正确解析RDS域名到内网IP。如果解析到公网IP,部署在VPC内的Lambda默认没有公网访问权限,自然无法连接。
  • 检查你填写的安全组规则是否存在笔误:你补充的规则里协议写的是TPC,而PostgreSQL实际使用的是TCP协议,协议配置错误会导致规则完全不生效,直接修改为TCP即可。
  • 确认Lambda函数的超时配置:你的数据库连接超时设为20秒,如果Lambda函数本身的执行超时时间小于20秒,连接还未建立就会被Lambda强制终止,直接调整函数超时时间为30秒以上测试即可。

次优先级排查点

  • 确认Lambda部署的子网属性:如果Lambda部署在VPC的公有子网,默认没有分配公网IP,就算RDS解析到公网IP也无法访问,两种解决方案:
    1. 把Lambda迁移到和RDS同VPC的私有子网,走内网链路连接,符合你不公开RDS的需求
    2. 在Lambda所在公有子网的路由表中配置NAT网关,让Lambda获得公网访问能力
  • 检查网络ACL配置:安全组是实例级访问控制,子网级的网络ACL如果拦截了5432端口的入站/出站流量,也会导致连接超时,确认对应子网的网络ACL放通了PostgreSQL相关流量。
  • 确认安全组出站规则:默认安全组出站是全放通,如果你手动修改过出站规则,需要确保允许Lambda访问RDS的5432端口。

快速验证方法

你可以在Lambda代码中加入域名解析逻辑,确认RDS域名的解析结果是否符合预期:

import socket
# 打印RDS域名解析到的IP
print("RDS解析IP:", socket.gethostbyname(rds_host))

如果打印的是公网IP,说明DNS解析配置异常,优先修复VPC的DNS参数即可。如果是VPC内网IP,再按照上面的步骤排查网络连通性即可。

另外如果你的需求是不公开RDS,完全可以把RDS的Publicly Accessible参数改为No,走内网连接不需要开启公网访问,安全性更高。

内容的提问来源于stack exchange,提问作者bananabread76

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 20:21:03