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

AWS Lambda部署Python代码报No module named '_cffi_backend'错误

你遇到的ModuleNotFoundError: No module named '_cffi_backend'报错核心原因是带C扩展的Python依赖包的编译环境和Lambda运行环境不兼容。cffi、cryptography这类包含二进制扩展的包,在不同Python版本、不同CPU架构下编译出来的二进制文件无法通用,你在Python3.7的EC2环境下打包的依赖,不管是给Lambda Python3.9用还是给Python3.7用,都会因为环境差异出现二进制兼容问题。


解决步骤

1. 匹配打包环境与Lambda运行环境

  • 确认你要使用的Lambda运行时版本(推荐使用Python3.9及以上受支持版本),打包依赖时必须使用完全相同的Python主版本+次版本。
  • 确认Lambda运行的CPU架构:如果Lambda用的是x86_64架构,就用x86架构的Amazon Linux 2环境打包;如果用的是arm64/Graviton架构,就用对应arm架构的环境打包,两者的二进制完全不兼容。

2. 推荐使用官方Lambda镜像打包(成功率最高)

直接用AWS官方预构建的Lambda运行时镜像安装依赖,完全匹配线上环境:

  1. 新建一个空文件夹,把你的Lambda代码和requirements.txt放进去,requirements.txt内容参考:
aws-encryption-sdk>=3.1.0
cryptography>=38.0.0
cffi>=1.15.0
boto3
  1. 拉取对应运行时的官方镜像,比如Python3.9 x86版本:
docker pull public.ecr.aws/lambda/python:3.9

如果是arm64版本就拉取public.ecr.aws/lambda/python:3.9-arm64
3. 在当前目录执行容器命令安装依赖到当前目录:

docker run -v "$PWD":/var/task public.ecr.aws/lambda/python:3.9 pip install -r requirements.txt -t .
  1. 把当前目录所有内容打包成zip包,注意要直接打包文件,不要外层套文件夹。

3. 额外代码修复提示

你提供的代码存在一处缩进错误,会导致只能返回最后一条数据库活动事件:
原代码中retObj.append(dbEvent)在for循环外,需要调整缩进放到for循环内部:

try:
    events = json.loads(plaintextEvents)
    for dbEvent in events['databaseActivityEventList']:
        print(dbEvent)
        retObj.append(dbEvent) # 调整缩进,放到for循环内部
except Exception as e:
    print (e)
    raise e

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 14:54:03