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

AWS Lambda是否必须用Amazon Linux?本地打包Python依赖报错解惑

问题解答:Windows打包Python依赖部署AWS Lambda报错的原因与解决方案

核心结论

你的报错确实是因为在Windows 7本地打包依赖库导致的,AWS Lambda的运行环境基于Amazon Linux系列(早期是Amazon Linux,现在主流是Amazon Linux 2,部分新环境为Amazon Linux 2023),像numpy、pandas这类包含编译型二进制扩展的Python库,必须在与Lambda兼容的Linux环境下构建,否则无法在Lambda的Linux运行时中正常加载。

为什么Windows打包会出问题?

  • numpy、pandas这类库并非纯Python代码,它们包含大量用C/C++编写的底层扩展模块,这些模块编译后生成的二进制文件(比如Linux下的.so文件、Windows下的.dll文件)是和操作系统、CPU架构强绑定的。
  • 你在Windows上安装的numpy,其二进制文件是针对Windows环境编译的,放到Lambda的Linux运行环境中根本无法被识别和加载——哪怕你能在ZIP包里看到numpy的文件,Lambda的Python解释器也无法调用这些Windows版本的二进制模块,所以才会报“Missing required dependencies ['numpy']”的错误。

AWS Lambda是否必须用EC2 Amazon Linux?

严格来说,是需要与Lambda运行环境兼容的Linux环境,不一定非得用EC2,现在有更灵活的方式:

  • 方式一:使用EC2 Amazon Linux实例构建
    这是传统的解决方案:

    1. 启动一台与Lambda运行时版本匹配的Amazon Linux EC2实例(比如对应Python 2.7的Amazon Linux 1)
    2. 在实例上安装Python 2.7、virtualenv工具
    3. 创建并激活虚拟环境,执行pip install -t ./package pandas cassandra-driver将依赖安装到指定目录
    4. 将package目录下的所有文件,连同你的lambda_function.py一起打包成ZIP包,上传到Lambda
  • 方式二:用Docker模拟Lambda环境构建(更高效)
    不需要开EC2,用AWS官方提供的Lambda运行时镜像在本地构建:

    1. 拉取对应Python版本的Lambda镜像,比如docker pull public.ecr.aws/lambda/python:2.7
    2. 运行容器并挂载本地目录,在容器内安装依赖到指定文件夹
    3. 将容器内的依赖文件复制到本地,再和你的代码打包成ZIP
  • 方式三:使用Lambda Layer管理依赖
    把pandas、numpy、cassandra这类通用依赖打包成Lambda Layer,后续可以重复用到多个Lambda函数中。Layer的构建同样需要在兼容的Linux环境下进行,构建好后上传到AWS,再在Lambda函数中关联该Layer即可。

额外提醒

Python 2.7的Lambda运行时已经在2020年结束了官方支持,后续不会再收到安全更新和维护,建议你尽量迁移到Python 3.x版本,不仅兼容性更好,也能避免潜在的安全风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 09:06:37