SAM构建AWS Lambda ONNX Runtime层时依赖解析失败求助
解决AWS Lambda Layer构建onnxruntime==1.18.1时的依赖解析错误
问题背景
使用SAM CLI 1.119.0、pip 24.1.1构建Python 3.12的Lambda Layer,requirements.txt指定:
onnxruntime==1.18.1 ; python_version >= "3.10" and python_version < "4.0"
构建时抛出错误:
Error: PythonPipBuilder:ResolveDependencies - {onnxruntime==1.18.1(wheel)}
调试日志显示SAM在manylinux2014_x86_64平台找不到匹配版本,但本地Python 3.12虚拟环境可正常安装该依赖。
问题原因
onnxruntime 1.18.1针对Python 3.12仅发布了manylinux_2_28_x86_64平台的wheel包,而旧版SAM CLI默认使用manylinux2014_x86_64(对应glibc 2.17)的平台标签,两者不匹配导致依赖解析失败。
解决方案
方法1:修改requirements.txt指定兼容平台
直接在依赖声明后添加平台参数,强制pip下载适配Lambda环境的包:
onnxruntime==1.18.1 ; python_version >= "3.10" and python_version < "4.0" --platform manylinux_2_28_x86_64 --only-binary=:all:
方法2:升级SAM CLI到最新版本
新版SAM CLI已更新默认平台标签,适配onnxruntime的新wheel格式,执行升级命令:
pip install --upgrade aws-sam-cli
方法3:手动构建Layer包上传
如果前两种方法无效,可手动构建兼容Lambda的包:
- 创建并激活Python 3.12虚拟环境:
python3.12 -m venv lambda-env source lambda-env/bin/activate
- 安装依赖到指定目录:
pip install onnxruntime==1.18.1 --platform manylinux_2_28_x86_64 --only-binary=:all: -t python/lib/python3.12/site-packages/
- 打包成zip文件:
cd python zip -r onnx-layer.zip .
- 修改SAM模板引用本地打包文件:
Resources: LambdaLayerOnnx: Type: AWS::Serverless::LayerVersion Properties: LayerName: !Sub ${AWS::StackName}-onnx ContentUri: ./onnx-layer.zip
内容的提问来源于stack exchange,提问作者Adcade
相关产品推荐
相关产品推荐

