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

Python Snappy已随部署包安装,AWS Lambda仍报错问题咨询

解决AWS Lambda中python-snappy依赖报错的方案

问题根源

你本地安装的python-snappy是基于本地系统(如Windows/macOS)编译的二进制包,而AWS Lambda的Python 3.9运行环境基于Amazon Linux 2,二者二进制架构不兼容,导致Lambda无法识别已部署的依赖包。

可行解决方案

1. 在Amazon Linux 2环境中构建兼容依赖

Lambda的运行环境是Amazon Linux 2,必须在相同环境下编译python-snappy才能保证兼容性:

  • 用Docker启动Amazon Linux 2容器,挂载本地代码目录:
    docker run -v "$PWD:/var/task" -it amazonlinux:2 bash
    
  • 在容器内安装编译依赖和Python 3.9:
    yum install -y gcc python39-devel python3-pip
    
  • 将python-snappy安装到本地挂载的目录下:
    pip3 install python-snappy -t ./package
    
  • 退出容器后,将package目录中的所有文件和你的Lambda代码放在同一层级,再打包成zip文件部署。

2. 调整Terraform部署配置(若使用Terraform)

确保Terraform正确引用兼容的部署包:

resource "aws_lambda_function" "avro_processor" {
  filename      = "lambda_deployment_package.zip"
  function_name = "avro-processor"
  role          = aws_iam_role.lambda_role.arn
  handler       = "lambda_function.lambda_handler"
  runtime       = "python3.9"

  source_code_hash = filebase64sha256("lambda_deployment_package.zip")
}

注意:打包时不要将依赖放在嵌套目录,要和代码文件平级,避免Lambda找不到模块。

3. 替代方案:使用纯Python版Snappy库

如果不想处理二进制编译,可以改用纯Python实现的Snappy库snappy(注意和python-snappy是不同包),直接在requirements.txt中添加:

snappy==0.6.1

这个包无需编译,跨环境兼容,部署后可直接解决依赖问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 01:07:11