[英]How to bundle Python for AWS Lambda
我有一个项目我想在AWS Lambda上运行,但它超过了50MB的压缩限制。 现在它的压缩为128MB,带有虚拟环境的项目文件夹位于623MB并包含(空间的顶级用户):
没有virtualenv
该项目<2MB。 requirements.txt
是:
click==6.7
cycler==0.10.0
ecdsa==0.13
Flask==0.12.2
Flask-Cors==3.0.3
future==0.16.0
itsdangerous==0.24
Jinja2==2.10
MarkupSafe==1.0
matplotlib==2.1.2
mpmath==1.0.0
numericalunits==1.19
numpy==1.14.0
pandas==0.22.0
pycryptodome==3.4.7
pyparsing==2.2.0
python-dateutil==2.6.1
python-dotenv==0.7.1
python-jose==2.0.2
pytz==2017.3
scipy==1.0.0
six==1.11.0
sympy==1.1.1
Werkzeug==0.14.1
xlrd==1.1.0
我使用Zappa进行部署,因此我对整个基础架构的理解是有限的。 我的理解是一些(很少)的库没有上传,所以例如numpy,那部分没有上传,亚马逊的版本被使用,已经在该环境中可用。
我建议使用以下工作流程(不使用slim_handler
S3存储桶):
scipy.minimize
,删除大部分并重新运行我的测试 pyminifier
混淆 要么:
compileall
以获取.pyc文件 我遇到了slim_handler: true
问题slim_handler: true
,我的连接断开,上传失败或发生其他一些错误,并且上传到S3的约25%我得到Could not connect to the endpoint URL
。 出于这个问题的目的,我希望将依赖关系降低到可管理的级别。
然而,主应用程序小于2MB的超过一半的依赖关系必须是某种记录。
我的问题是:
我已经看到你的所有包都可以压缩到83MB(只是包)。
我的解决方法是:
使用以下方法在本地安装您的软件包:
pip install -r requirements.txt -t .
尝试编译.pyc文件的方法,并删除其他文件。
部署:
sis deploy
希望能帮助到你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.