首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尽管使用了依赖层,Lambda函数包仍然很大。

尽管使用了依赖层,Lambda函数包仍然很大。
EN

Stack Overflow用户
提问于 2022-02-25 10:13:03
回答 1查看 593关注 0票数 2

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

为了解决这个问题并加快代码的部署,我分别打包了我的需求,并在模板中添加了一个层。文档建议这种方法应该有效。

层中的打包依赖项减少了在修改代码时上载的部署包的大小。

代码语言:javascript
复制
pip install --target ../package/python -r requirements.txt
代码语言:javascript
复制
Resources:
  ...

  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功能包的大小?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-25 10:53:38

实际上,这里的解决方案很简单,尽管对非Lambda专家来说并不明显。

正如问题中所述,第一步是构建包库。

代码语言:javascript
复制
pip install --target ../package/python -r requirements.txt

然而,当使用sam build -u构建Lambda时,使用相同的“requirements.txt”文件,并且再次安装所需的依赖项,这一次是应用程序的一部分。

因此,我所要做的就是删除我希望打包在一个单独层中的需求,并进行重建。这确实意味着我必须维护2x 'requirements.txt‘,但这是完全可以管理的。

我打开了一个问题,希望AWS能够更新他们的文档。

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

https://stackoverflow.com/questions/71264263

复制
相关文章

相似问题

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