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

AWS Lambda部署Cryptography v39后遇GLIBC_2.28缺失错误求助

针对Lambda函数GLIBC版本不兼容问题的解决方案

问题核心原因

AWS Lambda的x86_64运行时基于Amazon Linux 2,自带的GLIBC版本是2.26。而Cryptography v39+版本在编译时依赖更高的GLIBC 2.28,导致运行时出现版本缺失报错。你回退旧层无效,大概率是因为函数的层关联配置被意外覆盖,或者Lambda保留了旧的运行环境缓存。


分步解决方案

1. 锁定层版本并重新部署报错函数

  • 打开你的serverless.yml,找到报错函数的层配置,确保Cryptography层指定的是兼容的旧版本号(比如对应Cryptography v38.x的Klayers层版本),不要使用latest或自动升级的配置。
  • 执行命令强制重新部署该函数:
    sls deploy function -f <你的报错函数名称>
    
    这会让Lambda重新加载指定版本的层,而不是使用缓存的旧环境。

2. 手动清除Lambda运行环境缓存

如果重新部署后仍报错,可能是Lambda的运行环境缓存没刷新:

  • 登录AWS Lambda控制台,找到该函数,点击右上角的「部署」按钮(无需修改任何代码或配置);
  • 或者手动触发一次函数执行(传入任意合法参数),强制Lambda生成新的运行环境。

3. 构建自定义兼容层(终极方案)

如果Klayers的旧层还是无法使用,手动在Amazon Linux 2环境下构建Cryptography层:

  • 用Docker启动Amazon Linux 2容器:
    docker run -it amazonlinux:2 bash
    
  • 在容器内安装依赖并编译:
    # 安装Python 3.8和编译工具
    yum install python38 python38-devel gcc openssl-devel zip -y
    # 创建虚拟环境并安装指定版本的Cryptography
    python3.8 -m venv venv
    source venv/bin/activate
    mkdir -p python/lib/python3.8/site-packages
    pip install cryptography==38.0.4 -t python/lib/python3.8/site-packages/
    # 打包成层文件
    cd python
    zip -r cryptography-layer.zip .
    
  • 将生成的cryptography-layer.zip上传到AWS Lambda层,然后关联到报错函数。

4. 版本选择建议

不用回退到2021年的v3.4.7,Cryptography v38.x系列(比如38.0.4)是最后支持Amazon Linux 2的版本,包含了v3.4.7之后的所有安全补丁和大部分功能更新,完全满足大部分场景需求,同时兼容Lambda的GLIBC 2.26环境。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 03:00:59