运行AWS Lambda Python 3.9时提示GLIBC_2.28未找到的问题求助
解决AWS Lambda中GLIBC_2.28缺失的问题
问题根源
你的Python 3.9 Lambda运行环境基于Amazon Linux 2,系统自带的GLIBC版本为2.26,但cryptography库(由pyopenssl间接依赖)的新版本编译时要求GLIBC 2.28,导致模块导入失败。
具体解决方案
方案1:固定兼容的cryptography版本
直接在requirements.txt中添加适配Amazon Linux 2的cryptography版本(比如3.4.8,该版本无需GLIBC 2.28),修改后的文件内容如下:
boto3 botocore pycparser pyopenssl certifi cffi cryptography==3.4.8
重新打包依赖并部署Lambda函数即可。
方案2:在Amazon Linux 2环境编译依赖包
如果需要使用较新版本的cryptography,需在与Lambda一致的系统环境中编译依赖,确保生成的二进制文件兼容系统GLIBC:
- 启动Amazon Linux 2的EC2实例,或使用Docker镜像
amazonlinux:2 - 安装Python 3.9及编译工具:
sudo amazon-linux-extras install python3.9 sudo yum install gcc python3.9-devel - 创建虚拟环境并安装依赖到指定目录:
python3.9 -m venv lambda-env source lambda-env/bin/activate pip install -r requirements.txt -t ./package - 将
package目录下的文件打包为zip,上传至Lambda。
方案3:使用Lambda层预打包兼容依赖
把编译好的兼容依赖打包成Lambda层,供函数复用:
- 按方案2的步骤,将依赖安装到
python/lib/python3.9/site-packages目录 - 压缩该目录为zip文件,上传作为Lambda层
- 在Lambda函数配置中添加该层,确保层的Python版本与函数一致。
内容的提问来源于stack exchange,提问作者Dalal Alghomlas
相关产品推荐
相关产品推荐

