You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Lambda部署新包报错GLIBC_2.18未找到,求解决方案

解决AWS Lambda导入cryptography时的GLIBC版本错误

核心原因

AWS Lambda运行环境(基于Amazon Linux 2)自带的GLIBC版本为2.17,而你在EC2实例中安装依赖时,EC2系统的GLIBC版本更高,导致cryptography的Rust绑定库编译时依赖了GLIBC 2.18,上传到Lambda后因环境不兼容报错。

解决步骤

1. 使用Lambda兼容环境构建依赖

放弃直接在EC2实例安装依赖,改用Amazon Linux 2容器镜像构建,确保编译环境与Lambda运行时完全一致:

  • 拉取Amazon Linux 2镜像:
    docker pull amazonlinux:2
    
  • 启动容器并挂载本地目录:
    docker run -it -v $(pwd):/build amazonlinux:2 /bin/bash
    
  • 在容器内安装Python、pip和virtualenv:
    yum install -y python3 python3-pip
    pip3 install virtualenv
    
  • 创建并激活虚拟环境:
    cd /build
    virtualenv venv
    source venv/bin/activate
    
  • 安装依赖并强制源码编译:
    pip install fabric==2.7.1 --no-binary :all:
    
  • 退出容器,将venv/lib/pythonX.X/site-packages下的所有文件与lambda_function.py放在同一目录后压缩,作为Lambda部署包。

2. 锁定兼容的cryptography版本

在requirements.txt中明确指定兼容版本,同时安装时禁用预编译二进制包:

fabric==2.7.1
cryptography==3.4.8

在Amazon Linux 2环境中执行安装:

pip install -r requirements.txt --no-binary cryptography

3. 验证依赖兼容性

打包后,检查_rust.abi3.so的依赖项:

ldd venv/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust.abi3.so

确保输出中无GLIBC_2.18相关依赖。

内容的提问来源于stack exchange,提问作者kadina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 14:30:49