AWS Lambda:无法导入名称“asn1”

问题描述 投票:0回答:3

我正在使用 pysftp 从 python 函数连接到 sFTP 站点。这在我的本地运行良好,运行为

file_track.py
。但是当我在 AWS lambda 上部署它时,它失败了 –

{
  "error Message": "Unable to import module 'lambda function': cannot import name 'asn1' from 'cryptography.hazmat.bindings._rust' (unknown location)",
  "error Type": "Runtime.ImportModuleError",
  "requestId": "0235edb8-25a3-4570-a1ea-2a2696a7dd04",
  "stack Trace": []
}

请帮帮我!

amazon-web-services aws-lambda
3个回答
5
投票

即使在遵循 AWS 指南关于如何编译具有额外依赖项的 lambda 函数后,我也遇到了此错误。卡住了几个小时后,发现我的个人笔记本电脑和 lambda 函数的运行时环境之间的 CPU 架构存在差异。我的个人笔记本电脑是华硕 TUF A15,使用 x64 AMD Ryzen 7 4800H CPU。但是,我的 Lambda 函数的运行时是 x86_64(Intel CPU)上的 Python 3.8。我在 AMD CPU 上下载和打包的加密库包与 Intel CPU 不兼容。大多数其他库工作正常,但显然不是密码学库。

解决方案:

我为 Amazon Linux 2022 启动了一个运行 x86_64 AMI 的临时 m5.large EC2 实例(可以是 T2,我认为只要是 x86_64 就没有关系),然后按照此文档和我的文档中指定的相同步骤操作函数成功执行,没有任何问题。


0
投票

我似乎你没有用你的 lambda 函数打包你的

pysftp
python 包,因此它无法找到你可以尝试形成层的绑定,这是一个类似类型的问题,可能会帮助你

pysftp 库无法在 AWS lambda 层中工作


0
投票

根据这个git问题>https://github.com/pyca/cryptography/issues/9633

这在 jwt1.3.1 和 cryptography41.0.2 安装后有效

© www.soinside.com 2019 - 2024. All rights reserved.