Python限制中的AWS Lambda部署软件包

时间:2019-08-06 11:30:32

标签: python aws-lambda package

我想在AWS lambda函数上运行我的代码。为此,我需要导入一些python包(即pandas,numpy,sklearn,scipy)

我有两个问题: 首先,(解压缩)打包的python zip文件的大小大于250MB。

第二,我在使用scipy和sklearn时遇到了一些错误:

  

无法导入模块“ lambda_function”:无法导入名称   '_ccallback_c'

  

无法导入模块“ lambda_function”:未命名模块   'sklearn。 check_build._check_build'   ___________________________________________________________________________ / var / task / sklearn / __ check_build的内容:   __pycache _check_build.cpython-35m-x86_64-linux-gnu.sosetup.py   初始化 .py   ___________________________________________________________________________似乎scikit-learn的构建不正确。

我多次尝试重新安装... 但是sklearn和scipy仍然存在问题。

有什么主意吗?

AWS LambdaFunction中的示例代码:

import json
import numpy
import pandas
import sklearn
import scipy 


def lambda_handler(event, context):
    # TODO implement
    print(event)
    return

1 个答案:

答案 0 :(得分:0)

您似乎有两个问题。

第一个(也是最容易解决的)是您需要在与Amazon Linux相当的Linux发行版上安装相关模块。

您可以使用EC2或在装有Amazon Linux的Docker容器中执行此操作。

第二个问题(考虑到要使用的模块大小,如果不是不可能解决的话,这将比较棘手)是您需要将部署大小减小到250MB以下和50MB以下。

在安装时使用相关的CFLAG可能会为您提供一些帮助。有关可行的方法,请参见here

如果您仍然超出限制(我怀疑您会成为限制),那么您唯一的选择就是删除某些模块中您认为不会在特定程序中使用的文件。这是有风险的,通常容易出错,并且通常需要多次尝试才能正确。使用代码覆盖率工具可能会对您有所帮助,因为它们可以指示实际使用的文件。