AWS Lambda无法导入google模块求助(已尝试Layer)
AWS Lambda 中使用google库的解决方案
先明确依赖名称
注意不存在直接名为google的PyPI包,你需要的大概率是带google前缀的具体库,比如google-api-python-client、google-auth、google-cloud-storage等,请先确认你要安装的依赖全称。
正确构建并使用Lambda Layer(解决你之前的Layer无效问题)
模拟Lambda环境安装依赖
Lambda运行在Linux环境,直接在Windows/macOS安装的依赖可能不兼容,推荐用Docker或Linux机器操作:- 创建指定目录结构:
把mkdir -p python/lib/python3.x/site-packagesx替换为你的Lambda函数使用的Python版本(比如3.9、3.10) - 安装依赖到该目录:
例如要安装pip install 你的google类依赖名 -t python/lib/python3.x/site-packagesgoogle-api-python-client,就执行pip install google-api-python-client -t python/lib/python3.9/site-packages
- 创建指定目录结构:
正确打包Layer
进入包含python目录的上级文件夹,执行打包命令:zip -r google-layer.zip python/关键:zip包的根目录必须是
python,不能把python放在子文件夹里,否则Lambda无法识别依赖。上传并关联Layer
- 进入AWS Lambda控制台,创建新Layer,上传刚才的
google-layer.zip,选择和Lambda函数一致的Python运行时版本。 - 进入你的Lambda函数配置页面,在「Layers」模块添加刚才创建的Layer。
- 进入AWS Lambda控制台,创建新Layer,上传刚才的
排查Layer无效的常见原因
- Layer的Python版本和Lambda函数运行时版本不匹配(比如Layer是3.9,函数用3.10)
- 打包时目录结构错误,zip包内没有直接的
python目录 - 安装的依赖不是你实际需要的google类库,或者遗漏了依赖的子包
替代方案:直接打包依赖到Lambda部署包
如果Layer还是有问题,可以直接把依赖和代码一起打包:
- 本地创建空目录,把你的
lambda_function.py放入其中 - 执行命令安装依赖到当前目录:
pip install 你的google类依赖名 -t . - 把目录内所有文件(包括依赖和代码)打包成zip,上传到Lambda函数即可。
内容的提问来源于stack exchange,提问作者kashif naseem
相关产品推荐
相关产品推荐

