Lambda与EC2内网连通性问题排查求助
排查VPC内Lambda调用EC2 HTTPS超时问题的方法
以下是针对性的排查步骤,从服务端到网络层逐步验证:
验证EC2端服务可用性
- 在EC2实例本地执行
curl -I localhost:443(替换为实际HTTPS端口),确认服务正常监听并返回HTTP响应头,排除服务未启动、端口未绑定的问题。 - 查看EC2上的应用日志(如Nginx/Apache的
access.log/error.log,或自定义应用日志),检查是否有来自Lambda ENI IP的请求记录:- 无记录:说明请求未到达EC2,重点排查网络链路;
- 有错误记录:根据日志提示修复应用层问题(如TLS握手失败、路由匹配错误)。
- 在EC2实例本地执行
核对Lambda网络配置细节
- 检查Lambda所在子网的路由表:确认存在指向VPC本地CIDR的路由(目标为
local),确保请求不会被错误路由到外部网络。 - 确认Lambda关联的ENI状态:在EC2控制台的「网络接口」中,筛选描述含
lambda.amazonaws.com的ENI,检查其私有IP是否在子网范围内、状态为in-use。 - 查看Lambda的CloudWatch日志:搜索是否有DNS解析错误(如
getaddrinfo ENOTFOUND),若调用EC2用的是域名,需确认VPC DNS配置(启用VPC DNS、自定义DNS服务器)能正确解析私有域名;用IP调用则跳过此步。
- 检查Lambda所在子网的路由表:确认存在指向VPC本地CIDR的路由(目标为
抓包分析流量走向
- 在EC2实例上执行
tcpdump -i any port 443 -w ec2_https.pcap,触发Lambda调用后停止抓包,用tcpdump -r ec2_https.pcap分析:- 若未发现来自Lambda ENI IP的SYN包:说明请求未到达EC2,需排查Lambda子网路由、NACL或安全组;
- 若有SYN包但无SYN-ACK响应:检查EC2的安全组入站规则、本地防火墙(如iptables);
- 若TLS握手中断:重点排查TLS版本兼容性、证书配置。
- 若EC2抓不到包,可启用VPC流量镜像,对Lambda所在子网的流量进行捕获,确认请求是否从Lambda正常发出。
- 在EC2实例上执行
细粒度检查安全组与NACL
- 安全组:即使共用安全组,仍需确认入站规则允许Lambda ENI的IP段或整个VPC CIDR访问443端口(安全组为状态化,无需单独配置出站响应规则,但需确保入站规则未限制特定IP)。
- 网络ACL(NACL):NACL为无状态,需同时确认:
- 入站规则允许443端口的流量;
- 出站规则允许Ephemeral端口(通常1024-65535)的响应流量返回Lambda。
验证TLS/SSL兼容性
- 在Lambda代码中添加调试逻辑,捕获HTTPS请求的具体错误(如Python
requests库捕获SSLError,Node.jshttps模块监听error事件),确认是否为TLS版本不兼容、证书不信任等问题。 - 临时改用HTTP调用EC2(若业务允许),若请求成功则定位为TLS层面问题,需调整Lambda运行时的TLS配置或EC2的HTTPS服务配置。
- 在Lambda代码中添加调试逻辑,捕获HTTPS请求的具体错误(如Python
检查EC2实例资源与系统状态
- 通过CloudWatch Metrics或EC2本地执行
top/htop,检查CPU、内存、磁盘使用率,排除因资源耗尽导致服务无法处理请求的情况。 - 查看EC2系统日志(控制台「实例」→「监控」→「获取系统日志」),排查是否有网卡故障、iptables规则异常等系统层面的网络问题。
- 通过CloudWatch Metrics或EC2本地执行
内容的提问来源于stack exchange,提问作者Gandalf
相关产品推荐
相关产品推荐

