我在AWS中有一个Python 3.6 lambda函数。我已经从requirements.txt文件中打包了所有库并进行了部署。当我的函数触发时,我收到此错误:
module initialization error: Cannot load native module 'Crypto.Hash._SHA256'
我能找到的唯一参考是包库中的closed ticket。但是导致这个问题的是什么?我该如何解决?
答案 0 :(得分:0)
此问题可能与您的构建环境有关。 Python中的许多数学重型库依赖于本机编译的C模块来提高性能。您可以阅读有关here的更多信息。如果您的构建环境与lambda的执行环境不匹配,python将无法加载为您的构建环境编译的本机模块。 AWS Lambda的执行环境基于amzn-ami-hvm-2016.03.3.x86_64-gp2,如文档here所述。
当使用AWS CodeBuild使用aws / codebuild / python:3.5.2构建映像创建python部署包时,我遇到了同样的问题。使用this作为构建映像后,lambda能够加载本机模块。如果您在本地构建部署包,我建议您使用与lambda运行时兼容的映像启动docker容器,并在该容器上构建。