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

如何让AWS Lambda Python通过SSH隧道连接MySQL?

解决Lambda中sshtunnel导入报错"No module named '_cffi_backend'"的问题

问题根源

sshtunnel依赖cffi库,而cffi需要对应运行环境编译的_cffi_backend二进制文件。你直接在本地(非Amazon Linux 2环境)安装的sshtunnel包,其依赖的编译产物和Lambda的Amazon Linux 2运行环境不兼容,导致找不到该模块。

解决方案

必须在Amazon Linux 2环境中编译安装sshtunnel及其依赖,再打包成Lambda层:

方法1:用Docker模拟Lambda运行环境

  • 启动Amazon Linux 2容器:
    docker run -it --rm amazonlinux:2 bash
    
  • 在容器内安装Python 3.9及编译依赖:
    yum install -y python39 python39-pip gcc libffi-devel python39-devel
    
  • 创建Lambda层的标准目录结构:
    mkdir -p python/lib/python3.9/site-packages
    
  • 将sshtunnel安装到指定目录:
    pip3.9 install sshtunnel -t python/lib/python3.9/site-packages
    
  • 打包成zip文件:
    zip -r sshtunnel-layer.zip python/
    
  • 将生成的sshtunnel-layer.zip上传到AWS Lambda层,替换你之前创建的旧层。

方法2:用AWS SAM CLI自动构建

如果使用AWS SAM,可在模板中定义层,通过sam build命令自动在兼容环境中安装依赖,无需手动处理编译兼容问题。

验证

替换层后重新测试Lambda函数,from sshtunnel import SSHTunnelForwarder即可正常导入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 21:40:29