.NET 6 Lambda移入VPC后触发Runtime.Unknown错误,求排查方案
Runtime.Unknown错误的排查方案 以下是针对该问题的具体排查方向,按优先级排序:
检查Lambda执行角色的VPC相关权限
Lambda移入VPC时需要创建/管理弹性网络接口(ENI),如果执行角色缺少ec2:CreateNetworkInterface、ec2:DeleteNetworkInterface、ec2:DescribeNetworkInterfaces这三个核心权限,会直接导致无法接入VPC,触发运行时未知错误。去IAM控制台查看执行角色的策略,确保包含这些权限(可以直接附加AWS托管的AWSLambdaVPCAccessExecutionRole策略快速验证)。确认子网可用IP资源充足
Lambda每个实例都会占用子网中的一个IP地址,如果目标子网剩余IP不足,无法分配ENI所需的IP,会导致初始化失败。通过VPC控制台查看子网的已用/可用IP数量,换用IP更充足的子网测试。排查安全组的出站规则
.NET 6 Lambda的Runtime初始化必须访问AWS内部的Runtime API和CloudWatch日志服务,如果安全组的出站规则限制了HTTPS(443端口)流量,Runtime无法正常启动。确保安全组允许出站到0.0.0.0/0的443端口(或者通过VPC端点限定到AWS服务)。验证子网路由配置
如果是公有子网,需要确保路由表指向互联网网关;如果是私有子网,必须配置NAT网关或对应服务的VPC端点(比如Lambda Runtime API、CloudWatch Logs的VPC端点),否则Lambda无法连接到必要的AWS服务,导致Runtime初始化失败。调整Lambda初始化超时时间
移入VPC后,ENI创建和网络初始化会增加启动时间,默认的3秒初始化超时可能不够。尝试将初始化超时调高到10秒以上,再测试是否能正常触发。
内容的提问来源于stack exchange,提问作者baynezy

