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

跨VPC通过VPC Peering用pymysql从Python Lambda连接RDS超时问题

Lambda跨VPC Peering连RDS超时的排查与解决

逐条排查点

1. 确认Lambda子网的路由表配置

  • 检查VPC B里Lambda绑定的所有子网对应的路由表,必须都有172.31.0.0/16 -> pcx-xxxxxxx这条路由。别只看VPC默认路由表,要是Lambda关联的子网绑了其他没配置的路由表,流量根本发不出去。

2. 核对RDS的安全组与子网路由

  • 再确认RDS所在VPC A的子网路由表,确实有10.1.0.0/16 -> pcx-xxxxxxx的路由,并且状态生效。
  • RDS的入站安全组规则里,10.1.0.0/16的3306端口允许规则要确保是挂在RDS实例上的,别搞成了其他没用的安全组。另外把RDS的「公有访问」关掉,避免流量走公网。

3. 补全Lambda安全组的入站规则

  • 虽然VPC B的出站规则开了,但TCP是双向的,RDS的响应流量得能进Lambda的安全组。给Lambda用的SG加一条入站规则:TCP协议,端口选1024-65535(Lambda的临时端口段),源设为172.31.0.0/16。

4. VPC Peering状态与跨配置验证

  • 再确认Peering连接状态是Active,如果是跨区域或跨账户的Peering,两边的路由表和安全组都要配置到位,别漏了对方账户的接受步骤。

5. RDS终端节点接口的正确配置

  • 要是用终端节点,得确保:
    • 终端节点建在VPC A里,关联的安全组允许10.1.0.0/16访问3306端口。
    • VPC B要开DNS解析和DNS主机名(VPC设置里的两个选项都设为Yes),Lambda连接时用终端节点的DNS名,别写错。

6. 用EC2做连通性测试

  • 在VPC B里开一台和Lambda同子网、同安全组的EC2,装pymysql连RDS试试:
    • 要是EC2能连,说明问题在Lambda权限——检查Lambda执行角色有没有ec2:CreateNetworkInterface、ec2:DescribeNetworkInterfaces、ec2:DeleteNetworkInterface这三个权限,没有的话加上。
    • 要是EC2也超时,那还是网络层(路由、安全组)的问题,回去重新核对。

7. 检查DNS解析

  • 在VPC B的EC2上跑nslookup <RDS端点>,看返回的IP是不是172.31.0.0/16段的私有IP。要是返回公网IP,要么是RDS开了公有访问,要么是VPC DNS解析有问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 22:05:08