我正在开发一个lambda函数,它使用python 2.7中创建的ResumeParser库。但是当我在AWS上部署包括库的这个功能时,它会让我跟踪错误:
解压缩的大小必须小于262144000字节
答案 0 :(得分:4)
这是hard limit,无法更改:
AWS Lambda限制错误
超出先前限制表中列出的任何限制的函数将因超出限制异常而失败。这些限制是固定的,目前无法更改。例如,如果您收到来自AWS Lambda的异常CodeStorageExceededException或类似于“超出代码存储限制”的错误消息,则需要减小代码存储的大小。
您需要减小包装的尺寸。如果你有大型二进制文件将它们放在s3中并在bootstrap上下载。同样,对于依赖项,您可以从s3位置pip install
或easy_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