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

Lambda无法连接VPC内的RDS实例,请协助排查配置问题

搞定Lambda连不上私有子网RDS的问题

我来帮你一步步排查这个问题——同一VPC里EC2能连RDS,但Lambda不行,结合你给的配置,核心问题基本出在安全组和子网匹配上:

1. RDS安全组没放通Lambda所在子网的流量

先看你的RDS安全组sg-0fbf7205b5d5fa98c,它的入站规则只允许10.1.1.0/24、10.1.2.0/24、10.1.3.0/24、10.1.4.0/24这四个网段访问3306端口,但你没给出Lambda部署的那两个子网(subnet-00f3f0cb6957dbefa、subnet-0d3d2cf4df53a862f)的CIDR范围。

如果这两个Lambda子网的网段不在上面四个里面,RDS安全组直接就把Lambda的连接请求拦了——这是最常见的坑。

怎么解决:

  • 先查Lambda子网的CIDR:
    aws ec2 describe-subnets --subnet-ids subnet-00f3f0cb6957dbefa subnet-0d3d2cf4df53a862f
    
  • 把查到的网段加到RDS安全组的入站规则里(允许TCP 3306);
  • 更省心的方式:直接把Lambda的安全组sg-018da51b77f57eabf加到RDS安全组的入站源里,这样不管Lambda子网怎么换,只要安全组不变就能访问,比固定网段灵活多了。

2. 检查Lambda子网的路由表

Lambda部署在私有子网时,子网的路由表必须有本地路由(目标是10.1.0.0/16,目标类型是local),这样Lambda才能访问同VPC内的RDS。如果路由表错把所有流量都导去NAT网关或者外部,VPC内部的流量就走不通了。

验证方法:
查Lambda子网的路由表:

aws ec2 describe-route-tables --filters "Name=association.subnet-id,Values=subnet-00f3f0cb6957dbefa"

确保里面有Destination: 10.1.0.0/16, Target: local这条规则,没有的话赶紧加上。

3. 确认Lambda的弹性网卡(ENI)状态正常

Lambda在VPC里跑的时候会自动创建ENI,如果ENI创建失败或者状态异常,Lambda就没法联网。

检查命令:

aws ec2 describe-network-interfaces --filters "Name=description,Values=Lambda VPC ENI*" "Name=vpc-id,Values=vpc-0704ca4d3f652fe9e"

看看ENI的状态是不是available,有没有关联正确的Lambda安全组和子网。

额外确认点

  • 你的Lambda执行角色已经挂了AWSLambdaVPCAccessExecutionRole,这个权限是对的,它能让Lambda管理VPC里的网络资源,所以权限方面没问题;
  • Lambda的安全组出站规则是允许所有TCP流量到0.0.0.0/0,这个配置没问题,能保证Lambda发起连接请求。

按上面的步骤排查,应该就能解决连接问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:51:01