首页 > 解决方案 > 如何缩小 AWS Lambda 层的大型 python 包?

问题描述

我正在尝试部署一个具有大型二进制依赖项的 python 包,例如numpyscipyastropypandas等... 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-frameworkwithserverless-python-requirements提供了slim打包依赖项的选项,删除所有 *.pyc 和 *.so 文件。但我认为 Lambda 环境需要这些文件......如果可能的话,我不想使用任何框架,我最终可以运行 docker 来从 lambda 兼容的图像构建二进制文件(我现在正在使用 WSL 工作)。我尝试了很多东西,但它们都不起作用,我不知道为什么......

我真的很感谢任何帮助,以了解将如此庞大的软件包部署到 Lambda 的可能性和不可行...

标签: pythonaws-lambda

解决方案


作为遇到此问题的解决方法,我按照@jordanm 的建议进行操作并切换到 Fargate 任务。

截至 2020 年 12 月,一个更简单的解决方案是为您的 Lambda 使用容器映像


推荐阅读