如何在AWS Lambda上通过预编译二进制文件导入lxml库?
你上传二进制文件的方式不符合AWS Lambda层的目录规范,这是报错的核心原因。
正确操作步骤
- 解压
lxml_amazon_binaries.zip文件,得到lxml和usr两个目录 - 新建名为
python的空目录,将lxml目录整体移入该python目录下 - 若
usr目录下存在.so格式的动态链接库,可将其移入python目录,或在zip根目录新建lib目录移入 - 重新压缩:直接选中
python目录(和lib目录如果存在的话)生成新的zip包,压缩时不要包含外层的lxml_amazon_binaries目录,确保zip包打开后第一层即可看到python目录 - 将新生成的zip包上传为Lambda层,绑定到你的函数上,注意要保证预编译的lxml二进制版本和Lambda函数的Python运行时版本完全匹配
排查补充
如果调整后仍报错,可以在函数代码中添加如下行打印Python模块搜索路径,确认层路径是否被正常加载:
import sys print(sys.path)
正常情况下Lambda会自动将层内的python目录加入模块搜索路径,若未出现对应路径可检查层的运行时兼容配置是否和函数一致。
内容的提问来源于stack exchange,提问作者mmz
相关产品推荐
相关产品推荐

