AWS Lambda和python numpy模块

时间:2017-05-09 01:11:41

标签: python numpy aws-lambda

我正在尝试在aws lambda中导入python部署包。 python代码使用numpy。我按照虚拟环境的部署包说明进行操作,但它仍然给出了Missing所需的依赖关系[' numpy']。我按照stack overflow上给出的指令(跳过共享库的第4步,找不到任何共享库)但没有运气。有什么建议让它发挥作用吗?

5 个答案:

答案 0 :(得分:1)

最简单的方法是使用AWS Cloud9,无需启动EC2实例并准备部署程序包。

步骤1:启动Cloud9 IDE

  • 转到AWS控制台并选择Cloud9服务。
  • 创建环境
  • 输入名称
  • 环境设置(考虑使用t2.small实例类型,默认情况下,我有时在重启环境时会遇到问题)
  • 评论
  • 点击创建环境

步骤2:创建Lambda函数

  • 创建Lambda函数(屏幕底部)
  • 输入功能名称和应用名称
  • 选择运行时(Python 3.6)和蓝图(empty-python)
  • 功能触发器(无)
  • 创建无服务器应用程序(保留默认设置)
  • 完成
  • 等待几秒钟以打开IDE

第3步:安装Numpy

  • 在屏幕底部有一个命令提示符
  • 转到Application文件夹,对我来说这是

    cd App
    
  • 安装软件包(我们必须在虚拟环境中使用pip,因为默认pip指向/ usr / bin / pip,而这是python 2.7)

    venv/bin/pip install numpy -t .
    

第四步:测试安装

  • 您可以通过编辑lambda_function.py文件来测试安装:

    import numpy as np
    def lambda_handler(event, context):
        return np.sin(1.0)
    
  • 保存更改,然后单击屏幕顶部的绿色“运行”按钮

  • 应该会出现一个新标签,现在点击标签内的绿色“运行”按钮
  • Lambda执行后,我得到:

    Response
    0.8414709848078965
    

第5步:部署Lambda函数

  • 在屏幕右侧选择您的Lambda函数
  • 点击向上的箭头进行部署
  • 转到AWS Lambda服务选项卡
  • Lambda函数应该可见,名称格式为

    cloud9-ApplicationName-FunctionName-RandomString
    

答案 1 :(得分:0)

使用Numpy真的很痛苦。

Numpy需要在运行的同一个操作系统上正确编译。这意味着您需要在AMI映像上安装/编译Numpy,以便在Lambda中正确运行。

最简单的方法是启动一个小型EC2实例并将其安装在那里。然后复制编译后的文件(来自/ usr / lib / python / site-packages / numpy)。这些是您需要包含在Lambda包中的文件。

我相信您也可以使用serverless工具来实现这一目标。

答案 2 :(得分:0)

NumPy必须在将运行它的平台上编译。最简单的方法是使用Docker。 Docker有一个lambda容器。使用lambda容器在Docker中本地编译NumPy,然后推送到AWS lambda。

如果您想要一个简单的解决方案,serverless框架会为您处理所有这些。见https://stackoverflow.com/a/50027031/1085343

答案 3 :(得分:0)

我遇到了同样的问题,pip安装不适用于我。最终,我发现一些关于此问题herehere的晦涩文章。他们建议去pypi,下载.whl文件(选择py版本和manylinux1_x86_64),然后上载并解压缩。这才是最终为我工作的东西。如果没有其他办法对您有用,我建议您尝试一下。

答案 4 :(得分:-1)

对于Python 3.6,您可以按照已经建议的方式使用Docker映像。此处的完整说明:https://medium.com/i-like-big-data-and-i-cannot-lie/how-to-create-an-aws-lambda-python-3-6-deployment-package-using-docker-d0e847207dd6

关键是:

docker run -it dacut / amazon-linux-python-3.6