AWS Lambda错误:解压缩的大小必须小于262144000字节

时间:2017-07-27 06:33:34

标签: amazon-web-services lambda

我正在开发一个lambda函数,它使用python 2.7中创建的ResumeParser库。但是当我在AWS上部署包括库的这个功能时,它会让我跟踪错误:

  

解压缩的大小必须小于262144000字节

3 个答案:

答案 0 :(得分:4)

这是hard limit,无法更改:

  

AWS Lambda限制错误

     

超出先前限制表中列出的任何限制的函数将因超出限制异常而失败。这些限制是固定的,目前无法更改。例如,如果您收到来自AWS Lambda的异常CodeStorageExceededException或类似于“超出代码存储限制”的错误消息,则需要减小代码存储的大小。

您需要减小包装的尺寸。如果你有大型二进制文件将它们放在s3中并在bootstrap上下载。同样,对于依赖项,您可以从s3位置pip installeasy_install,这将比从pip repos中提取更快。

答案 1 :(得分:2)

也许您没有排除使文件变得如此庞大的开发包。

我的情况是(对于NodeJS),我在serverless.yml中缺少以下内容:

package:
  exclude:
    - node_modules/**
    - venv/**

查看是否有类似的Python或您的案例。

答案 2 :(得分:0)

对我有用的解决方法: 安装pyminifier:

    pip install pyminifier

转到要压缩的库文件夹。就我而言,我想将site-packages文件夹压缩到我的虚拟环境中。因此,我在与site-packages相同的级别上创建了一个site-packages-min文件夹。运行以下shell脚本以缩小python文件并在site-packages-min文件夹中创建相同的结构。将这些文件压缩并上传到S3。

    #/bin/bash

    for f in $(find site-packages -name '*.py')
    do
            ori=$f
            res=${f/site-packages/site-packages-min}
            filename=$(echo $res| awk -F"/" '{print $NF}')
            echo "$filename"
            path=${res%$filename}
            mkdir -p $path
            touch $res
            pyminifier --destdir=$path $ori >> $res || cp $ori $res
    done        

HTH