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

如何修复AWS Lambda中Snowflake连接器的GLIBC_2.28缺失错误?

问题

尝试将版本为2.7.9的snowflake-connector-python作为层添加至AWS Lambda时,触发如下错误:

Unable to import module lambda_function: /lib64/libc.so.6: version GLIBC_2.28 not found (required by /opt/python/lib/python3.9/site-packages/cryptography/hazmat/bindings/_rust.abi3.so)

此前已做的操作:

  • 用Ubuntu容器构建依赖:docker run -v /Users/local/Documents/docker_test:/working -it --rm ubuntu
  • 容器内完成Python 3.9安装、虚拟环境配置、依赖库(libssl-dev、libffi-dev)安装,最后在指定目录下安装snowflake-connector-python==2.7.9
  • 将依赖目录打包成ZIP,创建AWS Lambda层并关联到Python 3.9函数
  • 额外调整:因_cffi_backend缺失安装cffi,将cryptography从36版本升级到38,把系统python/python3别名指向Python 3.9

Lambda函数代码:

import json
import snowflake.connector

def lambda_handler(event, context):
    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!')
    }

解决方案

问题根源

AWS Lambda的Python 3.9运行时基于Amazon Linux 2,系统自带GLIBC版本为2.26。而你用Ubuntu容器构建的依赖(比如cryptography)是基于Ubuntu的高版本GLIBC(2.28+)编译的,导致在Lambda环境中无法兼容运行。

修复步骤

1. 切换到Amazon Linux 2容器构建依赖

放弃Ubuntu,用和Lambda完全一致的环境构建:

docker run -v /Users/local/Documents/docker_test:/working -it --rm amazonlinux:2

2. 在容器内配置Python 3.9环境

依次执行以下命令:

  • 更新系统并安装编译依赖:
    yum update -y
    yum install -y gcc openssl-devel bzip2-devel libffi-devel wget tar gzip
    
  • 下载编译Python 3.9(以3.9.18版本为例):
    wget https://www.python.org/ftp/python/3.9.18/Python-3.9.18.tgz
    tar xzf Python-3.9.18.tgz
    cd Python-3.9.18
    ./configure --enable-optimizations
    make altinstall
    
  • 验证版本并升级pip:
    python3.9 --version
    python3.9 -m pip install --upgrade pip
    

3. 安装依赖到Lambda层目录

  • 创建符合Lambda要求的目录结构:
    mkdir -p lambda_layers/python/lib/python3.9/site-packages
    cd lambda_layers/python/lib/python3.9/site-packages
    
  • 安装指定版本的snowflake连接器:
    python3.9 -m pip install snowflake-connector-python==2.7.9 -t .
    
  • 若之前有_cffi_backend报错,在此环境下安装cffi:
    python3.9 -m pip install cffi -t .
    

4. 打包上传Lambda层

  • 返回lambda_layers目录,将python目录打包(确保ZIP内直接是python文件夹,不要外层多余目录):
    cd /working/lambda_layers
    zip -r snowflake-connector-layer.zip python/
    
  • 把这个ZIP上传到AWS Lambda层,关联到你的Python 3.9函数即可。

快速替代方案

如果不想手动编译环境,可在安装依赖时指定兼容Lambda的平台参数(需保证pip版本足够新):

pip3 install snowflake-connector-python==2.7.9 --platform manylinux2014_x86_64 --only-binary=:all: -t .

但这种方式可能存在部分依赖兼容问题,优先推荐用Amazon Linux 2容器构建的方案。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 12:01:17