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

Lambda调用私有子网Fargate服务时NLB连接被拒问题排查

问题排查与解决方案

首先,Error: connect ECONNREFUSED 127.0.0.1:80这个错误是核心线索——你的Lambda函数没有正确解析到Network Load Balancer(NLB)的真实IP,反而尝试连接本地回环地址。结合你的配置细节,我整理了几个最可能的原因和对应的解决思路:

1. Lambda函数未部署到目标VPC,无法解析私有NLB的DNS

你的NLB是Scheme: internal类型,它的DNS名称属于VPC私有域名空间,只有VPC内部的资源才能正确解析到NLB的弹性网络接口(ENI)IP。如果Lambda默认运行在AWS托管的公网环境(未配置VPC),它会使用AWS公网DNS解析器,根本无法识别私有NLB的域名,最终可能解析失败或返回无效地址(比如127.0.0.1)。

解决方法:

  • 进入Lambda函数配置页,将其部署到你的目标VPC的私有子网(和NLB、Fargate同VPC)
  • 你已经给Lambda执行角色配置了ec2:CreateNetworkInterface等必要权限,这部分没问题
  • 注意:Lambda部署到私有子网后,如果需要主动访问S3(比如处理上传的文件),需要配置VPC网关端点(Gateway类型)或者NAT网关——私有子网默认没有公网访问能力,而S3触发Lambda是AWS内部调用,但Lambda主动访问S3需要额外配置。

2. Lambda的VPC配置存在错误

如果你已经把Lambda部署到VPC,但以下配置有误也会导致问题:

  • 选择了公网子网而非私有子网
  • 子网路由表缺失VPC本地路由(默认VPC都会有,除非你手动删除)
  • enableDnsSupport或enableDnsHostnames未在VPC中启用(你提到VPC已启用DNS选项,这一步可以快速确认)

验证方法:

  • 检查Lambda的子网配置,确保选择的是NLB所在VPC的私有子网
  • 查看子网路由表,确认有指向VPC CIDR的本地路由条目

3. NLB目标组与Fargate服务的端口不匹配

虽然你说Fargate健康检查通过,但需要确认NLB转发的端口和Fargate容器实际监听的端口一致:

  • 你的NLB监听TCP 80,但如果Fargate容器内的服务实际监听的是其他端口(比如3000),且目标组的TargetPort未对应设置,NLB会把流量转发到错误端口,最终导致连接被拒绝(虽然这个场景的错误通常不是127.0.0.1,但也需要排查)

验证方法:

  • 查看TargetGroupService的配置,确认Port/TargetPort与Fargate任务定义中暴露的端口一致
  • 检查Fargate容器的端口映射规则是否正确

4. 安全组的隐性限制(即使全开放也要确认)

虽然你说Lambda和Fargate用同一个全开放安全组,但还要确认:

  • NLB的安全组是否允许来自Lambda安全组的TCP 80入站流量(NLB的安全组需要明确允许目标流量)
  • Fargate的安全组是否允许来自NLB安全组的对应端口流量

快速测试建议

你可以在Lambda中添加一段代码,先解析NLB的DNS名称再尝试连接,通过日志定位问题:

const dns = require('dns');
const axios = require('axios');

exports.handler = async (event) => {
  const nlbDns = 'your-nlb-dns-name'; // 替换成你的NLB实际DNS名称
  console.log(`Resolving NLB DNS: ${nlbDns}`);
  const ips = await dns.promises.resolve(nlbDns);
  console.log(`Resolved IPs: ${JSON.stringify(ips)}`);
  
  try {
    const response = await axios.get(`http://${nlbDns}`);
    return { statusCode: 200, body: response.data };
  } catch (err) {
    console.error('Error details:', err);
    return { statusCode: 500, body: err.message };
  }
};

如果日志显示解析出的IP不是NLB的ENI IP,那问题肯定出在VPC配置或DNS解析环节。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:19:28