AWS Lambda无法解析Route 53域名:ElastiCache连接报错排查
Lambda无法解析Route53 CNAME记录导致连接ElastiCache失败的问题解答
不需要为Lambda配置访问Route53托管区域的IAM策略。Route53的公共DNS解析服务是公开可访问的,无需额外权限就能进行域名解析,你遇到的getaddrinfo ENOTFOUND错误本质是DNS解析失败,和IAM权限无关,主要排查方向集中在网络配置和记录有效性上。
核心错误原因分析
getaddrinfo ENOTFOUND表示Lambda无法将myroute53address.stackoverflow.com解析为对应的IP地址,常见触发场景包括:
- Lambda所在VPC的DNS配置异常,无法正常解析域名
- Route53的CNAME记录配置错误或未生效
- Lambda与ElastiCache所在网络未连通(即使解析成功也会后续报错,但当前第一步是解析失败)
具体排查步骤
验证环境变量与域名正确性
- 在Lambda代码中添加日志输出
CACHE_ADDRESS的值,确认环境变量确实设置为myroute53address.stackoverflow.com,避免拼写错误 - 本地用
nslookup myroute53address.stackoverflow.com或dig myroute53address.stackoverflow.com测试解析,如果本地都无法解析,直接检查Route53记录配置
- 在Lambda代码中添加日志输出
检查VPC的DNS设置
如果Lambda运行在VPC内,必须确保VPC的DNS配置正常:- 登录AWS控制台进入VPC服务,找到Lambda所属的VPC
- 确认该VPC的DNS支持和DNS主机名都已设置为
启用状态 - 如果VPC使用自定义DNS服务器,要确保该服务器能访问公网并正常解析你的Route53域名
确认Route53 CNAME记录有效性
- 进入Route53控制台,打开
stackoverflow.com托管区域,检查myroute53address这条CNAME记录的目标值是否正确指向ElastiCache集群的配置端点(或单个节点端点) - 注意Route53记录有TTL(生存时间)设置,默认是300秒,修改记录后需要等待TTL过期再测试解析
- 进入Route53控制台,打开
排查网络连通性(解析成功后需验证)
当DNS解析正常后,还需要确保Lambda能连通ElastiCache:- 检查Lambda所在安全组的出站规则,允许访问ElastiCache的端口(默认是11211)
- 检查ElastiCache集群的安全组入站规则,允许Lambda所在安全组的IP或安全组ID访问对应端口
- 确保Lambda和ElastiCache处于同一个VPC,或通过VPC对等连接、VPN等方式实现网络连通
内容的提问来源于stack exchange,提问作者Travis
相关产品推荐
相关产品推荐

