首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Python绑定到AWS Lambda

如何将Python绑定到AWS Lambda
EN

Stack Overflow用户
提问于 2018-01-27 20:47:01
回答 1查看 2.3K关注 0票数 9

我有一个项目,我想运行在AWS上,但它超过了50 it的压缩限制。现在,它的压缩速度为128 it,带有虚拟环境的项目文件夹位于623 it,包括(空间的顶级用户):

  • 枕叶(~187)
  • 熊猫(~108)
  • numpy (~74.4MB)
  • lambda_packages (~71.4MB)

没有virtualenv,项目就是<2MB。requirements.txt是:

代码语言:javascript
复制
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

我使用扎帕进行部署,所以我对整个基础结构的理解是有限的。我的理解是,一些库(极少数)没有被上传,所以对于numpy,这个部分没有上传,Amazon的版本已经在那个环境中可用了。

我建议使用以下工作流(而不使用S3桶进行slim_handler):

  1. 删除所有包中与"test_*.py“匹配的所有文件
  2. 由于我只使用scipy.minimize,所以手动树抖动执行,方法是删除其中的大部分并重新运行测试。
  3. 缩小所有代码并使用pyminifier混淆
  4. zappa部署

或者:

  1. 运行compileall以获取.pyc文件
  2. 删除所有*.py文件,让zappa上传.pyc文件
  3. zappa部署

我在slim_handler: true上遇到了问题,要么是我的连接中断,要么是上传失败,要么发生了其他错误,而且在上传到S3的大约25%的时候,我得到了Could not connect to the endpoint URL。为了解决这个问题,我希望将依赖关系降到可管理的水平。

然而,超过一半的依赖项(主应用程序小于2MB )必须是某种记录。

我的问题是:

  1. AWS的解压缩限制是多少?是250 Is还是500 Is?
  2. 我是否在正确的轨道上与上述方法减少包装尺寸?
  3. 是否有可能更进一步使用.pyz文件?
  4. 有任何标准的实用工具可以帮助上面的工作吗?
  5. 蟒蛇没有摇树库吗?
EN

回答 1

Stack Overflow用户

发布于 2018-01-28 07:28:12

  1. AWS中的限制用于解压缩250 as的代码(如下面的https://hackernoon.com/exploring-the-aws-lambda-deployment-limits-9a8384b0bec3所示)
  2. 我建议采用第二种方法,并编译所有内容。我认为您也应该考虑使用无服务器框架。它不会强迫您创建一个非常重的虚拟环境。

我已经看到,所有的包都可以压缩到83 to (仅仅是包)。

我的解决办法是:

  1. 使用无服务器框架(考虑从烧瓶直接转移到API )
  2. 使用以下方法将包本地安装在同一个文件夹上: 安装-r requirements.txt -t。
  3. 尝试编译为.pyc文件的方法,并删除其他文件。
  4. 部署: sis部署

希望能帮上忙。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48480390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档