AWS LAMBDA部署包在Python限制一个(AWS Lambda Deployment Pac

2019-10-29 16:22发布

我想运行我的AWS lambda函数的代码。 要做到这一点,我需要进口一些Python包(即熊猫,numpy的,sklearn,SciPy的)

我有两个问题:首先,中(解压缩)包装蟒蛇zip文件大小比250MB更大。

其次,我使用SciPy的以及sklearn因为得到了一些错误:

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

无法导入模块“lambda_function”:无模块命名为“sklearn。 check_build._check_build” ___________________________________________________________________________的/ var /任务的内容/ sklearn / __ check_build:__pycache _check_build.cpython-35m-x86_64-linux-gnu.sosetup.py 初始化的.py ___________________________________________________________________________似乎scikit学习没有被正确建立。

我试图重新安装了许多遍,但仍然存在的问题sklearn和SciPy的。

任何想法?

在AWS LambdaFunction示例代码:

import json
import numpy
import pandas
import sklearn
import scipy 


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

Answer 1:

你似乎有两个问题。

第一个(也是最容易解决)的是,你需要在一个Linux发行版媲美亚马逊Linux上安装相关的模块。

你可以做到这一点使用EC2或与亚马逊的Linux上有一个码头工人的容器。

第二个问题(这是一个有点麻烦,如果不是不可能解决给你想要使用的模块的大小),你需要向下让您的部署规模下解压250MB和50MB下拉链。

利用相关的CFLAG安装时可能会得到你一些的方式出现。 见这里的什么可能工作的想法。

如果仍然超过极限(我怀疑你会)你留下唯一的选择将是删除一些文件,在其中你相信就不会在特定的程序中使用的模块。 这是有风险的,往往容易出错,通常需要多次尝试得到正确的。 使用代码覆盖工具可以帮助你在这里,因为他们可以指示实际上正在使用的文件。



文章来源: AWS Lambda Deployment Package in Python Limites