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

AWS Lambda无法导入pysftp/paramiko及相关报错问题求助

解决AWS Lambda中SFTP/SCP文件传输问题的有效方法

一、修正打包方式解决模块导入错误

  • 确保依赖包与lambda_function.py处于同一顶层目录,禁止嵌套子文件夹。正确结构示例:
    lambda_function.py
    paramiko/          # 解压后的paramiko依赖文件夹
    pysftp/            # 解压后的pysftp依赖文件夹
    
  • 打包时直接压缩当前目录下的所有文件,避免外层文件夹嵌套。执行命令:
    zip -r lambda_deploy.zip .
    
  • 优先使用Linux/macOS的zip命令或WSL环境打包,避免Windows图形化压缩工具导致的路径异常。

二、构建兼容Lambda环境的依赖层(解决GLIBC版本问题)

Lambda基于Amazon Linux 2运行,本地安装的依赖易因系统库版本不兼容报错,需在匹配环境下构建:

  1. 用Docker模拟Amazon Linux 2环境:
    docker run -it --rm -v $(pwd):/app amazonlinux:2
    
  2. 在容器内安装Python及编译依赖:
    yum install -y python3 python3-pip gcc libffi-devel openssl-devel
    # 创建对应Lambda Python版本的Layer目录(示例为3.9)
    mkdir -p python/lib/python3.9/site-packages
    # 将依赖安装到指定目录
    pip3 install paramiko pysftp -t python/lib/python3.9/site-packages/
    
  3. 退出容器后,将python文件夹打包为Layer压缩包:
    zip -r sftp_deps_layer.zip python/
    
  4. 在AWS控制台将该压缩包创建为Lambda Layer,关联到目标函数即可。

三、轻量化替代方案

如果上述方法仍有阻碍,可尝试以下简化方案:

  • 纯Python依赖精简:仅保留paramiko核心SFTP功能,避免冗余依赖;或选用无需编译的轻量SFTP库。
  • S3中转同步:将压缩后的文件上传至S3,远程机器定时通过s3 sync或Python脚本拉取文件,跳过Lambda直接连接远程机器的环节。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 02:55:31