AWS Lambda使用nodejs12.x运行时报错找不到aws-sdk模块求助
解决思路
- 检查Serverless打包规则
核对serverless.yml中package.exclude/package.include配置,确认排除规则没有误生效;如果使用了serverless-webpack、serverless-esbuild这类第三方打包插件,检查插件的externals配置是否错误标记了aws-sdk需要被剔除。 - 排查自定义Lambda层的影响
若函数绑定了自定义层,检查层内node_modules目录下是否存在空的aws-sdk目录、损坏的软链接,或是层配置修改了NODE_PATH环境变量,导致Node.js运行时优先从层路径加载依赖,无法命中系统默认预置的aws-sdk。 - 确认运行时环境变量配置
检查函数是否手动修改了NODE_PATH变量,nodejs12.x运行时默认将预置依赖存放在/var/runtime/node_modules路径下,若NODE_PATH被覆盖会导致运行时无法定位到内置的aws-sdk。 - 兼容性验证
确认代码中导入的是aws-sdk v2版本,nodejs12.x运行时仅默认内置aws-sdk v2,若你导入的是v3版本的独立子包(如@aws-sdk/client-s3),这类包不属于运行时预置范围,必须放入部署包或Lambda层中。 - 快速验证方法
可以临时关闭aws-sdk的排除配置,将其包含在部署包中发布,如果此时函数运行正常,即可确定问题出在打包排除逻辑或运行时依赖路径配置上,再按上述方向逐一排查即可。
内容的提问来源于stack exchange,提问作者Kevin Lucas
相关产品推荐
相关产品推荐

