解决Unable to import module 'lambda_function': cannot import name '_AES'
Solve Unable to import module 'lambda_function': cannot import name '_AES'
我正在尝试部署我的 lambda 函数,该函数使用 pycrypto 的模块 Crypto.Cipher AES 发出请求和解密数据。这是我导入的样子:
import boto3
from botocore.vendored import requests
import gzip
from io import StringIO, BytesIO
import base64
import sys
from datetime import datetime
import time
from Crypto.Cipher import AES
我 运行 我的代码在我的本地 Mac 环境中并且它运行完美,但是当我将我的包上传到 AWS Lambda 并测试它时,我收到以下错误:
Unable to import module 'lambda_function': cannot import name '_AES'
我检查了 问题并从此 git 存储库下载了 pycrypto 包,进行构建并将结果复制到我的 lambda 文件夹,打包它但仍然无法正常工作。
我检查了构建的结果,我注意到在这个文件夹中:
pycrypto-2.6.1/build/lib.linux-x86_64-3.7/Crypto/Cipher
生成的 AES 文件带有与我的 Mac OS
相关的扩展名
我尝试在 Linux EC2 实例上构建包,但仍然出现相同的错误(尽管文件发生了变化)
我根据以下问题尝试了一条新路径,但仍然失败并出现完全相同的错误。
为什么 AWS Lambda 无法读取 pycrypto 包中的 AES 模块?我已经使用其他外部库部署了 Lambda 函数,但从未遇到过这个问题。
这对我有用使用python2:
https://www.github.com/Doerge/awslambda-pycrypto
我刚刚下载了这个项目并将我的 lambda_function.py
文件压缩到 Crypto
和 pycrypto-2.6.1.dist-info
文件夹中。
我看到 Crypto/Cipher/
中编译的 .so
文件(如 _AES.so
)缺少我的 python 版本和 OS 体系结构和发行版(即:AES.cpython-27m-x86_64-linux-gnu.so
)。如果我找到自己正确构建包的方法而不是使用第三方编译的库,我会更新我的答案。
我正在尝试部署我的 lambda 函数,该函数使用 pycrypto 的模块 Crypto.Cipher AES 发出请求和解密数据。这是我导入的样子:
import boto3
from botocore.vendored import requests
import gzip
from io import StringIO, BytesIO
import base64
import sys
from datetime import datetime
import time
from Crypto.Cipher import AES
我 运行 我的代码在我的本地 Mac 环境中并且它运行完美,但是当我将我的包上传到 AWS Lambda 并测试它时,我收到以下错误:
Unable to import module 'lambda_function': cannot import name '_AES'
我检查了
我检查了构建的结果,我注意到在这个文件夹中:
pycrypto-2.6.1/build/lib.linux-x86_64-3.7/Crypto/Cipher
生成的 AES 文件带有与我的 Mac OS
相关的扩展名我尝试在 Linux EC2 实例上构建包,但仍然出现相同的错误(尽管文件发生了变化)
我根据以下问题尝试了一条新路径,但仍然失败并出现完全相同的错误。
为什么 AWS Lambda 无法读取 pycrypto 包中的 AES 模块?我已经使用其他外部库部署了 Lambda 函数,但从未遇到过这个问题。
这对我有用使用python2:
https://www.github.com/Doerge/awslambda-pycrypto
我刚刚下载了这个项目并将我的 lambda_function.py
文件压缩到 Crypto
和 pycrypto-2.6.1.dist-info
文件夹中。
我看到 Crypto/Cipher/
中编译的 .so
文件(如 _AES.so
)缺少我的 python 版本和 OS 体系结构和发行版(即:AES.cpython-27m-x86_64-linux-gnu.so
)。如果我找到自己正确构建包的方法而不是使用第三方编译的库,我会更新我的答案。