AWS Lambda添加EFS后调用失败提示Network Error网络错误
AWS Lambda挂载EFS后调用报Network Error排查方案
注意:控制台抛出的Calling the invoke API action failed with this message: Network Error属于通用前端报错,绝大多数场景不是本地到AWS的公网连接问题,而是Lambda执行环境初始化时挂载EFS失败、VPC内部连通性异常导致,按以下优先级排查即可:
相关配置参考
- EFS基础配置:

- EFS关联安全组配置:

- EFS访问点配置:

- Lambda执行角色选择配置:

- Lambda执行角色权限配置:

- Lambda VPC配置:

- Lambda关联VPC安全组配置:

- 未挂载EFS时Lambda运行状态:

排查步骤(按问题出现概率从高到低排序)
1. 核对安全组规则(占同类问题90%)
- EFS绑定的安全组入站规则:必须放通Lambda关联安全组的TCP 2049端口(NFS服务默认端口)访问权限,不要只配置0.0.0.0/0或者不相关的网段来源;临时验证可以先放通Lambda所在子网网段的2049端口入站,测试连通后再收紧规则
- Lambda绑定的安全组出站规则:必须允许发起到EFS安全组TCP 2049端口的连接,不要配置全禁出站的规则
- 避免两个安全组互相嵌套引用导致规则死锁,比如EFS安全组入站允许Lambda安全组、Lambda安全组出站只允许EFS安全组这种配置,在部分场景下会出现规则匹配异常,临时验证阶段可以先放开网段级权限测试。
2. 核对VPC子网与EFS挂载目标配置
- 确认Lambda和EFS部署在同一个VPC下,跨VPC挂载需要提前配置对等连接、路由表、安全组全链路放通,同VPC部署是最低成本无坑的方案
- 核对Lambda所选子网类型:如果选择公有子网部署VPC模式Lambda,必须给子网配置指向互联网网关的路由+公网IP,或者配置NAT网关,否则Lambda本身网络初始化就会失败;生产环境建议选私有子网部署
- 确认EFS在Lambda所选的所有可用区都创建了挂载目标:如果EFS只在2个可用区创建挂载目标,Lambda配置了3个可用区的子网,落在第三个可用区的Lambda实例会因为找不到同可用区挂载目标直接连不上EFS。
3. 核对IAM权限与EFS访问点配置
- 确认Lambda执行角色已经附加对应权限:允许对目标EFS、目标访问点执行
elasticfilesystem:ClientMount操作,需要写权限的话还要加elasticfilesystem:ClientWrite权限,不要在资源配置里填错ARN - 如果EFS开启了IAM身份认证,Lambda挂载配置里必须勾选“使用IAM角色认证”选项,否则连接会被直接拒绝
- 核对EFS访问点的目录权限配置:Lambda默认运行用户为uid=1000、gid=1000,如果访问点配置的根目录属主为root、权限为700,会出现挂载失败,部分场景下也会抛通用网络错误。
4. 核对Lambda挂载参数配置
- 本地挂载路径必须在
/mnt/目录下,比如/mnt/efs,不要配置系统保留路径(比如直接挂载到/var、/opt等目录) - 确认挂载配置里选择的EFS文件系统和访问点是匹配的,不要误选其他文件系统下的访问点。
快速验证方法
在和Lambda相同VPC、相同子网、相同安全组下临时创建一台EC2实例,执行以下命令测试EFS连通性:
# 替换<EFS挂载目标IP>为对应可用区的EFS挂载IP,<本地测试路径>比如/tmp/efstest mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 <EFS挂载目标IP>:/ <本地测试路径>
如果EC2都无法挂载EFS,问题出在VPC/安全组/EFS侧配置,和Lambda本身无关;如果EC2可以正常挂载,再回到Lambda侧核对权限、挂载路径、访问点配置即可。
内容的提问来源于stack exchange,提问作者Talha Anwar
相关产品推荐
相关产品推荐

