我正在尝试部署一个具有大型二进制依赖项的 python 包,例如 numpy
、scipy
、astropy
、pandas
等... zip 文件超过 400MB,因此我必须将其大小缩小到 250MB 以下才能将其部署到 S3 的 lambda 层。
我知道我可以用类似的东西删除测试、文档和 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-python-requirements
的 serverless-framework
提供了 slim
选项来打包依赖项,删除所有 *.pyc和 *.so 文件。但我认为 Lambda 环境需要这些文件......如果可能的话,我不想使用任何框架,我最终可以运行 docker 以从兼容 lambda 的图像构建二进制文件(我现在正在使用 WSL)。我尝试了很多东西,但它们不起作用,我不确定为什么...
我非常感谢您帮助我了解将如此庞大的包部署到 Lambda 的可能性和可能性...
最佳答案
作为遇到此问题时的解决方法,我按照@jordanm 的建议并切换到 Fargate 任务。
截至 2020 年 12 月,一个更简单的解决方案是使用 container image为您的 Lambda。
关于python - 如何缩小 AWS Lambda 层的大型 python 包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61276309/