Lambda 中的联网问题疑难解答
默认情况下,Lambda 在与AWS服务和互联网连接的内部 Virtual Private Cloud (VPC) 中运行您的函数。要访问本地网络资源,您可以将函数配置为连接到您账户中的 VPC。使用此功能时,您可以管理函数的互联网访问以及与 Amazon Virtual Private Cloud(Amazon VPC)资源的网络连接。
网络连接错误可能是由于 VPC 的路由配置、安全组规则、AWS Identity and Access Management(IAM)角色权限、网络地址转换(NAT)或资源可用性(例如 IP 地址或网络接口)中的问题造成。根据具体问题的不同,如果请求无法到达目标,则可能会看到特定错误或超时。
VPC:函数无法访问互联网或超时
问题:连接到 VPC 后,您的 Lambda 函数失去互联网访问权限。
错误:错误:连接 ETIMEDOUT 176.32.98.189:443
错误:错误:任务在 10.00 秒后超时
错误:ReadTimeoutError: Read timed out. (read timeout=15)
当您将函数连接到某个 VPC 时,所有出站请求都会通过该 VPC。要连接到互联网,请将 VPC 配置为将出站流量从函数的子网发送到公有子网中的 NAT 网关。有关更多信息和示例 VPC 配置,请参阅 为连接到 VPC 的 Lambda 函数启用互联网访问权限。
如果您的某些 TCP 连接超时,这可能是数据包碎片造成的。Lambda 函数无法处理传入的碎片 TCP 请求,因为 Lambda 不支持 TCP 或 ICMP 的 IP 碎片化。
VPC:函数需要在不使用互联网的情况下访问AWS服务
问题:您的 Lambda 函数需要在不使用互联网的情况下访问AWS服务
要在不能访问互联网的情况下从私有子网将函数连接到AWS服务,请使用 VPC 终端节点。
VPC:已达到弹性网络接口限制
错误:ENILimitReachedException:函数的 VPC 已达到弹性网络接口限制。
当您将一个 Lambda 函数连接到某个 VPC 时,Lambda 将为该函数所附加的每个子网和安全组组合创建一个弹性网络接口。原定设置服务配额为每个 VPC 250 个网络接口。要请求增加配额,您可以使用 Service Quotas 控制台
EC2:类型为“lambda”的弹性网络接口
错误代码:Client.OperationNotPermitted
错误消息:无法修改此类接口的安全组
如果您尝试修改由 Lambda 管理的弹性网络接口(ENI),则会收到此错误。ModifyNetworkInterfaceAttribute
不包含在用于更新由 Lambda 创建的弹性网络接口上的操作的 Lambda API 中。
DNS:UNKNOWNHOSTEXCEPTION,无法连接到主机
错误消息:UNKNOWNHOSTEXCEPTION
Lambda 函数最多支持 20 个并发 TCP 连接进行 DNS 解析。函数可能正要耗尽此限制。大多数常见的 DNS 请求都是通过 UDP 完成的。如果函数只建立 UDP DNS 连接,那么此问题与您无关。该错误通常是由配置错误或基础设施降级引发的,因此在深入检查 DNS 流量之前,请确认 DNS 基础设施是否配置正确且运行正常,并且 Lambda 函数是否引用 DNS 中指定的主机。
请注意,如果诊断出问题与 TCP 连接最大值有关,您不能请求提高此限制。如果 Lambda 函数因 DNS 有效负载较大而回退到 TCP DNS,请确认解决方案是否正在使用支持 EDNS 的库。有关 EDNS 的更多信息,请参阅 RFC 6891 standard