关联VPC后AWS Lambda无法访问应用负载均衡的原因排查
错误的访问路径:使用公网URL而非内网DNS
你的Lambda位于VPC私有子网内,访问同VPC的应用负载均衡(ALB)时,应该使用ALB的内网DNS名称,而非公网URL。如果使用公网URL,流量会被路由到NAT网关走公网绕行,不仅增加延迟,还会触发额外的公网访问校验逻辑。同VPC内的资源通过内网DNS访问时,流量会直接走VPC内部路由,无需经过公网或NAT网关。ALB安全组未允许Lambda的访问流量
你只配置了Lambda的安全组,但ALB的安全组规则可能未放行来自Lambda的HTTPS流量。ALB的安全组需要添加入站规则:允许TCP 443端口的流量来源为Lambda所在的安全组(或私有子网的CIDR范围)。如果ALB安全组仅对0.0.0.0/0开放公网访问,那么来自VPC内网Lambda的流量会被拒绝。Lambda安全组出站规则配置有误
你的Lambda安全组出站规则设置为ALL ALL 443 0.0.0.0/0,这是不规范的配置。HTTPS流量基于TCP协议,正确的出站规则应该是:# 出站规则 HTTPS TCP 443 0.0.0.0/0错误的协议匹配可能导致Lambda无法发起有效的HTTPS请求。
路由表与NACL的潜在绕行问题
虽然私有子网的NACL允许所有流量,但如果你的路由表将所有0.0.0.0/0流量导向NAT网关,同时又使用ALB公网URL访问,会触发不必要的公网绕行逻辑,需要额外校验NAT网关公网IP是否被ALB安全组允许、公有子网NACL是否放行响应流量等。但这种方式完全没必要,优先使用内网DNS访问ALB即可规避这类问题。
内容的提问来源于stack exchange,提问作者TheWalkingMalteser

