需要使用像numpy,pandas这样的python依赖项在AWS中部署lambda函数。 制作所有的zip文件并使用S3路径执行后发现以下错误
无法导入模块' lambda_function':
导入多阵列numpy扩展模块失败。最
可能你试图导入一个失败的numpy版本。
如果您正在使用numpy git repo,请尝试 setTheme(R.style.ThemeApp_Green); // themApp_green value define style.xml file.
(全部删除
不受版本控制的文件)。否则重新安装numpy。
原始错误是:无法导入名称多阵列
答案 0 :(得分:1)
经过努力,我发现我必须在python3.6 virtualenv 中创建我的部署包,而不是直接从主机创建。我在Ubuntu 16.04 docker镜像中做了以下操作。这假设您已经安装/配置了python3.6,virtualenv和awscli,并且您的lambda函数代码位于~/lambda_code
目录中:
1)cd ~
(我们将在主目录中构建virtualenv)
2)virtualenv venv --python=python3.6
(创建虚拟环境)
3)source venv/bin/activate
(激活虚拟环境)
4)pip install numpy
5)cp -r ~/venv/lib/python3.6/site-packages/* ~/lambda_code
(将所有已安装的软件包复制到lambda_code目录的根级别。这将包含一些不必要的文件,但如果需要,您可以自行删除这些文件)
6)cd ~/lambda_code
7)zip -r9 ~/package.zip .
(拉上lambda包)
8)aws lambda update-function-code --function-name my_lambda_function --zip-file fileb://~/package.zip
(上传到AWS)
你的lambda函数现在应该可以import numpy
没有问题。
如果您想要更开箱即用的解决方案,可以考虑使用无服务器来部署lambda函数。在我找到上述解决方案之前,我遵循指南here并能够在python3.6 lambda函数中成功运行numpy。