代码在AWS控制台编写时,如何为Lambda Layer添加依赖?
解决Lambda Layer导入依赖失败的问题
问题根源
Lambda的Python层对依赖包的目录结构有硬性要求——必须把依赖放在python/目录(或更细分的python/lib/pythonX.X/site-packages/,X.X对应Lambda使用的Python版本)下,你直接压缩my-dependency文件夹本身,会导致Lambda的Python解释器找不到模块路径。
修复步骤
- 新建一个名为
python的空文件夹 - 将本地
c:\users\info\appdata\local\programs\python\python312\lib\site-packages\下的my-dependency文件夹,完整复制到刚创建的python文件夹内(如果想更规范,可在python下再建lib/python3.12/site-packages/目录,把依赖放进去,适配Lambda的Python 3.12环境) - 压缩整个
python文件夹生成新的zip包(注意:压缩时要保证python是zip包的根目录,不能套在外层文件夹里) - 删除原Lambda Layer版本,上传新生成的zip包并重新关联到你的Lambda函数
- 检查Lambda函数使用的Python版本是否为3.12,和你本地安装依赖的版本保持一致
- 注意:如果依赖名是
my-dependency,在Python代码里要写成import my_dependency(Python不允许模块名带连字符,会被解析为减法操作)
额外提醒
如果你的依赖包含编译后的二进制文件(比如C扩展),本地Windows环境安装的版本和Lambda的Linux运行环境不兼容,这种情况需要在Linux环境或用Docker模拟Lambda环境重新打包依赖。
内容的提问来源于stack exchange,提问作者Primico
相关产品推荐
相关产品推荐

