VPC内AWS Lambda连接SQS超时求助(已配置互联网访问)
检查安全组出站规则:确认Lambda关联的安全组出站规则允许HTTPS(443端口)访问SQS服务所在的IP范围。可临时设置出站规则允许所有0.0.0.0/0的443流量测试,若恢复正常,再根据AWS官方IP地址范围,添加对应区域SQS服务的IP段到安全组。
验证网络ACL配置:网络ACL是无状态的,需确保Lambda所在子网的出站ACL允许443端口流量,同时入站ACL允许NAT网关返回的临时端口(通常为1024-65535)流量。若ACL限制了返回端口,会导致TCP连接无法完成三次握手,最终引发超时。
确认SQS与Lambda的区域一致性:跨区域调用SQS可能因网络路由或延迟导致超时,检查预生产环境中Lambda和SQS是否处于同一AWS区域,避免跨区域调用。
核对Lambda执行角色权限:尽管测试环境权限正常,仍需确认预生产环境的Lambda角色策略中,
sqs:SendMessage权限的资源是否为目标SQS队列的正确ARN(注意区域、账户ID、队列名称是否匹配)。部分场景下,资源配置错误可能导致连接被阻断,表现为超时而非权限拒绝。在子网内抓包分析流量:在Lambda所在子网启动一台同安全组的EC2实例,执行
tcpdump -i any host <SQS公共端点IP> and port 443,触发Lambda调用SQS后观察抓包结果:- 若无SYN包发出:检查Lambda子网路由表是否指向NAT网关
- 有SYN包但无SYN-ACK响应:排查NAT网关到互联网的路由或SQS端点可达性
- 有SYN-ACK但未完成SSL握手:排查SSL证书或中间代理问题
检查NAT网关状态与路由:确认NAT网关处于
Available状态,Lambda所在子网的路由表默认路由(0.0.0.0/0)指向该NAT网关;同时NAT网关所在子网的路由表需有指向互联网网关(IGW)的默认路由,确保NAT能正常转发流量。正确使用AWS Reachability Analyzer:
- 通过
nslookup <SQS公共URL>获取目标SQS的IP地址 - 在Reachability Analyzer中创建路径分析:
- 源选择Lambda所在子网的弹性网络接口(ENI)
- 目标选择“IP address”,填入SQS的IP地址,端口指定443
- 运行分析后,根据结果定位网络链路中的阻断点(如安全组、ACL、路由表问题)
- 通过
内容的提问来源于stack exchange,提问作者taquion

