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

Vin*_*Rao 3 amazon-web-services aws-lambda

我正在使用 pysftp 从 python 函数连接到 sFTP 站点。这在我的本地运行良好,运行为file_track.py. 但是当我在 AWS lambda 上部署它时,它失败并显示 \xe2\x80\x93

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

请帮帮我!

\n

小智 5

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

解决方案:

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