AWS Lambda调用bonsai模块时缺失libldap_r-2.4.so.2依赖求助
解决方案:为Python 3.11 x86_64 Lambda Layer安装bonsai模块
核心问题分析
- Bonsai没有适配
manylinux2014_x86_64的预编译二进制包,因此无法通过指定--only-binary=:all:的方式安装。 - 直接安装bonsai后,Lambda运行时缺少其依赖的
libldap_r-2.4.so.2等系统库,导致导入失败。
具体操作步骤(在AWS CloudShell中执行)
创建符合Lambda Layer规范的目录结构
Lambda Layer要求Python包放在python/lib/python3.11/site-packages/路径下,系统库放在lib/路径下:mkdir -p my-layer/python/lib/python3.11/site-packages mkdir -p my-layer/lib安装编译bonsai所需的系统依赖
CloudShell基于Amazon Linux 2,通过yum安装OpenLDAP开发库,用于编译bonsai:sudo yum install -y openldap-devel安装cryptography、ldap3和bonsai到指定目录
先安装支持预编译包的cryptography和ldap3,再编译安装bonsai:# 安装cryptography和ldap3 pip3.11 install \ --platform manylinux2014_x86_64 \ --target=my-layer/python/lib/python3.11/site-packages \ --implementation cp \ --python-version 3.11.8 \ --only-binary=:all: --upgrade \ cryptography ldap3 # 编译安装bonsai pip3.11 install bonsai --target=my-layer/python/lib/python3.11/site-packages复制依赖的系统共享库到Layer目录
将bonsai需要的LDAP库复制到my-layer/lib/,确保Lambda运行时能加载:cp /usr/lib64/libldap_r-2.4.so.2 my-layer/lib/ cp /usr/lib64/liblber-2.4.so.2 my-layer/lib/打包生成Lambda Layer压缩包
进入my-layer目录后打包,确保压缩包内的目录结构符合要求:cd my-layer zip -r ../python-ldap-layer.zip .Lambda函数配置
- 将生成的
python-ldap-layer.zip上传为Lambda Layer,并关联到你的Python 3.11 x86_64 Lambda函数。 - 在Lambda函数的环境变量中添加:
该配置让Python能够找到Layer中打包的系统库。LD_LIBRARY_PATH=/opt/lib:$LD_LIBRARY_PATH
- 将生成的
内容的提问来源于stack exchange,提问作者Lee Cavazos
相关产品推荐
相关产品推荐

