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

在AWS Glue中使用Paramiko连接SFTP时遇导入错误求助

解决AWS Glue作业中Paramiko依赖问题

问题分析

本地运行正常的Paramiko SFTP连接代码部署到AWS Glue时出现两类问题:

  1. NoModuleFoundError: paramiko:Glue默认环境未预装Paramiko
  2. ImportError: cannot import name 'asn1' from 'cryptography.hazmat.bindings._rust':手动上传Paramiko后,依赖的cryptography版本与Glue环境不兼容(多因版本冲突或Rust绑定组件缺失)

解决方案

方案1:使用Glue附加模块参数自动安装兼容版本

这是最简便的方式,让Glue自动处理依赖匹配:

  1. 打开AWS Glue控制台,进入目标作业的编辑页面
  2. 在Job parameters区域,添加以下参数:
    • 键:--additional-python-modules
    • 值:paramiko==2.12.0,cryptography==38.0.4

    版本说明:该组合适配Glue 3.0/4.0(Python 3.9/3.10);若使用Glue 2.0(Python 3.7),可调整为paramiko==2.9.2,cryptography==3.4.8

  3. 保存作业并重新运行

方案2:手动上传兼容的预编译whl包

若因网络限制无法从PyPI下载,可手动上传对应平台的whl包:

  1. 下载适配Linux x86_64平台的预编译包:
    • Paramiko:paramiko-2.12.0-py2.py3-none-any.whl
    • cryptography:cryptography-38.0.4-cp36-abi3-manylinux_2_28_x86_64.whl
  2. 将两个包上传到S3存储桶的指定路径(如s3://your-glue-libs/)
  3. 在Glue作业编辑页面的Python library path中填入该S3路径
  4. 保存并重新运行作业

方案3:验证环境依赖版本(排查用)

若仍有问题,可在代码开头添加以下代码确认当前环境的依赖版本,便于调整适配:

import sys
import cryptography
print(f"Python版本: {sys.version}")
print(f"cryptography版本: {cryptography.__version__}")

注意事项

  • 确保选择的Paramiko与cryptography版本兼容,可参考Paramiko官方文档的依赖说明
  • Glue作业运行在Linux实例上,必须上传manylinux_x86_64架构的预编译whl包,不可使用Windows/macOS版本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 20:35:16