我有一个Python,自从我开始使用AWS以来,包的大小已经从445 to膨胀到9.5MB。

为了解决这个问题并加快代码的部署,我分别打包了我的需求,并在模板中添加了一个层。文档建议这种方法应该有效。
层中的打包依赖项减少了在修改代码时上载的部署包的大小。
pip install --target ../package/python -r requirements.txtResources:
...
ProxyFunction:
Type: AWS::Serverless::Function
Properties:
Architectures:
- x86_64
CodeUri: proxy/
Handler: app.lambda_handler
Layers:
- !Ref ProxyFunctionLibraries
Role: !GetAtt ProxyFunctionRole.Arn
Runtime: python3.8
Tracing: Active
ProxyFunctionLibraries:
Type: AWS::Serverless::LayerVersion
Properties:
LayerName: proxy-function-lib
Description: Dependencies for the ProxyFunction.
ContentUri: package/.
CompatibleRuntimes:
- python3.8然而,这似乎并没有阻止Lambda在顶层对所有东西进行静态打包,而且每次我部署包时仍然是9.5MB。由于某种原因,新层的大小为11 is,但只有在进行更改时才会进行部署。
如何减少Lambda功能包的大小?

发布于 2022-02-25 10:53:38
实际上,这里的解决方案很简单,尽管对非Lambda专家来说并不明显。
正如问题中所述,第一步是构建包库。
pip install --target ../package/python -r requirements.txt然而,当使用sam build -u构建Lambda时,使用相同的“requirements.txt”文件,并且再次安装所需的依赖项,这一次是应用程序的一部分。
因此,我所要做的就是删除我希望打包在一个单独层中的需求,并进行重建。这确实意味着我必须维护2x 'requirements.txt‘,但这是完全可以管理的。
我打开了一个问题,希望AWS能够更新他们的文档。
https://stackoverflow.com/questions/71264263
复制相似问题