2017-06-18 66 views
0

我在AWS中有一个Python 3.6 lambda函数。我打包了我的requirements.txt文件中的所有库并进行了部署。当我的函数触发,我得到这个错误:无法在AWS中加载Pyrebase模块Lambda

module initialization error: Cannot load native module 'Crypto.Hash._SHA256' 

我能找到的唯一的参考就是这个closed ticket在包库。但是,这是什么原因造成的?我如何解决它?

回答

0

此问题可能与您的构建环境有关。 Python中的许多数学重型库都依赖本地编译的C模块来提高性能。你可以阅读更多关于here如果你的构建环境与lambda的执行环境不匹配,python将无法加载为你的构建环境编译的本地模块。 AWS Lambda的执行环境基于amzn-ami-hvm-2016.03.3.x86_64-gp2,如文档here所述。

使用AWS CodeBuild使用aws/codebuild/python创建python部署包时遇到了同样的问题:3.5.2 build image。在使用this作为我的构建映像之后,lambda能够加载本地模块。如果你在本地构建你的部署包,我会建议你启动一个Docker容器,使用与你的lambda运行时兼容的映像并在该容器上构建。