我正在寻找一种在AWS lambda中使用numpy的方法.我没有使用EC2只是为了这个,所以如果有人有一个建议,我会感激.目前收到错误:
无法导入名称’multiarray’
使用grunt lambda创建zip文件并上传功能代码.我使用的所有模块都安装在lambda函数根目录下的python_modules文件夹中,该文件夹包含使用pip install和requirements.txt文件的numpy.
经过努力,我发现我必须在python3.6 virtualenv中创建我的部署包,而不是直接从主机创建.我在Ubuntu 16.04 docker镜像中做了以下操作.这假设您已经安装/配置了python3.6,virtualenv和awscli,并且您的lambda函数代码位于〜/ lambda_code目录中:
1)cd~(我们将在主目录中构建virtualenv)
2)virtualenv venv –python = python3.6(创建虚拟环境)
3)源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(Upload to AWS)
你的lambda函数现在应该可以导入numpy而没有任何问题.
如果您想要一个更开箱即用的解决方案,您可以考虑使用无服务器来部署您的lambda函数.在我找到上述解决方案之前,我按照指南here进行了操作,并且能够在python3.6 lambda函数中成功运行numpy.