AWS Lambda导入simple-salesforce层提示缺少GLIBC_2.18错误如何解决
问题排查与解决方案
1. GLIBC版本不兼容报错处理
报错核心原因是Ubuntu 18.04自带的GLIBC版本为2.27,而你使用的AWS Lambda Python 3.6运行环境基于Amazon Linux 2,最高仅支持GLIBC 2.17,simple-salesforce依赖的cryptography库高版本采用Rust编译,会依赖高版本GLIBC导致报错。
解决方法二选一:
- 优先选择指定低版本无Rust绑定的cryptography库安装,执行命令:
pip install cryptography==3.4.8 simple-salesforce -t build/python/lib/python3.6/site-packages
cryptography 3.4.8及更早版本无Rust编译绑定,不会触发GLIBC版本依赖错误。 - 直接使用AWS官方提供的Lambda对应运行环境的容器镜像打包,打包环境和Lambda运行环境完全一致,从根源避免系统依赖兼容问题。
2. 依赖缺失报错处理
你单独使用.whl文件安装时仅安装了simple-salesforce本体,未自动安装其关联依赖,才会出现requests、authlib等包缺失的报错,按以下流程打包即可解决:
- 第一步先清空build目录下的site-packages文件夹,避免旧文件干扰
- 第二步执行完整安装命令,自动拉取所有关联依赖,不要加sudo避免部分依赖被安装到系统目录而非目标文件夹:
python3 -m pip install --no-cache-dir simple-salesforce -t build/python/lib/python3.6/site-packages - 打包时直接选中python文件夹压缩,不要将外层build目录也打入压缩包,Lambda层要求压缩包解压后第一层即为python目录。
3. 打包后校验步骤
- 打包前进入
build/python/lib/python3.6/site-packages目录,确认存在simple_salesforce、requests、authlib、cryptography四个文件夹,确认依赖安装完整 - 如果你同时使用pandas层,需要确认pandas层的Python版本和当前层完全一致,避免版本冲突
4. Lambda运行验证
部署层后先使用仅包含simple-salesforce导入的测试代码验证,排除其他层的干扰,确认当前层可用后再叠加其他业务依赖层。
内容的提问来源于stack exchange,提问作者Tanmay Bordekar
相关产品推荐
相关产品推荐

