python - 如何缩小 AWS Lambda 层的大型 python 包?
问题描述
我正在尝试部署一个具有大型二进制依赖项的 python 包,例如numpy
、scipy
、astropy
、pandas
等... zip 文件超过 400MB,所以我必须将他的大小缩小到 250MB 以下才能将其部署到 lambda 层来自 S3。
我知道我可以使用类似的东西删除测试、文档和 pycache 目录
find -name "tests" -type d | xargs rm -rf
find -name "docs" -type d | xargs rm -rf
find -name "__pycache__" -type d | xargs rm -rf
但这还不够……
理论上可以删除 *.pyc 和 *.so 文件吗?我知道,例如,serverless-framework
withserverless-python-requirements
提供了slim
打包依赖项的选项,删除所有 *.pyc 和 *.so 文件。但我认为 Lambda 环境需要这些文件......如果可能的话,我不想使用任何框架,我最终可以运行 docker 来从 lambda 兼容的图像构建二进制文件(我现在正在使用 WSL 工作)。我尝试了很多东西,但它们都不起作用,我不知道为什么......
我真的很感谢任何帮助,以了解将如此庞大的软件包部署到 Lambda 的可能性和不可行...
解决方案
作为遇到此问题的解决方法,我按照@jordanm 的建议进行操作并切换到 Fargate 任务。
截至 2020 年 12 月,一个更简单的解决方案是为您的 Lambda 使用容器映像。
推荐阅读
- java - 如何从 ItemTouchHelper 更新 recyclerview 数据?
- javascript - 为什么我的不会自动设置它的高度?
- javascript - 为什么我的 React setState 永远循环?
- android - 为什么我的按钮视图 ID 在运行时会发生变化?
- javascript - 如何做出反应等到检索到 api 数据
- pkg-config - 将 pkg-config 与模块环境相结合
- excel - 如何引用非连续命名范围内的特定单元格?
- routes - nextJS 深度动态路由
- reactjs - 如何使过滤和搜索协同工作?
- javascript - 在 ramda 中调用具有相同参数的函数列表