【问题标题】:AWS Serverless | Code storage limit exceededAWS 无服务器 |超出代码存储限制
【发布时间】:2019-01-14 07:01:30
【问题描述】:

我有一个错误超出代码存储限制在 AWS 中部署无服务器应用程序。总大小 409 B。

错误信息说:

发生错误:HelloLambdaFunction - 超出代码存储限制。 (服务:AWSLambda;状态代码:400;错误代码:CodeStorageExceededException;请求 ID:...)

【问题讨论】:

    标签: amazon-web-services serverless-framework serverless


    【解决方案1】:

    Requesting an AWS Lambda function and layer storage quota increase 并在the request is approved 之后调用aws cloudformation continue-update-rollback 应该可以修复由于CodeStorageExceededException 而卡在UPDATE_ROLLBACK_FAILED 中的堆栈

    【讨论】:

      【解决方案2】:

      如上所述,每个区域可以上传的所有部署包的总大小:75 GB。所以如果我们设置

      默认情况下,框架会为每个部署创建函数版本。此行为是可选的,并且可以在您不通过其限定符调用过去版本的情况下关闭。如果你想这样做,你可以调用你的函数,例如 arn:aws:lambda:....:function/myFunc:3 来调用版本 3。

      要关闭此功能,请设置提供程序级别的选项 versionFunctions。

      提供者:版本功能:假

      【讨论】:

        【解决方案3】:

        专门找这个和serverless相关的问题,发现 https://github.com/serverless/serverless/issues/400。这是无服务器框架的一个已知问题。但是,一些有进取心的人使用能够修剪旧版本的插件创建了一个解决方案: https://github.com/claygregory/serverless-prune-plugin。这允许您在不删除整个堆栈的情况下清理旧版本和代码存储。

        例如,您可以使用以下命令删除除最后 10 个版本之外的所有版本:

        sls prune -n 10
        

        还有更多选项可用于按阶段或区域进行限制。更好的是,可以将插件集成到部署中以自动删除除 x 版本之外的所有版本。

        我在当前的无服务器项目中使用了这个插件,它兑现了承诺。

        【讨论】:

        • 是的,它有效。但是,如果有很多版本的函数,清除版本可能需要很长时间E:\git\serverless>sls prune -n 20Serverless: Prune: Querying for deployed function versions Serverless: Prune: dev-insertData has 116 additional versions published and 0 aliases, 96 versions selected for deletion Serverless: Prune: Deleting Function dev-insertData v118... Serverless: Prune: Deleting Function dev-insertData v117... . : Serverless: Prune: Deleting Function dev-insertData v23... . :
        • 这是真的。如果您的代码存储空间用完了,第一次修剪可能需要一段时间。使用它在每次部署时修剪的插件,因此它只需要清理一个版本。所以这只是第一次修剪需要时间。
        【解决方案4】:

        我正在解决这个问题,使用sls remove 删除云形成堆栈并使用sls deploy 命令部署无服务器项目。这对我有用。

        【讨论】:

        • 删除堆栈(可能会丢失附加资源中的数据)是危险的,并且对于具有更安全解决方案的问题(例如 sls prune -n​​ 10)来说是一种过度杀伤。
        【解决方案5】:

        来自PublishVersion - AWS LambdaCodeStorageExceededException 表示:

        您已超出每个帐户的最大总代码大小。

        来自AWS Lambda Limits - AWS Lambda

        • 每个区域可以上传的所有部署包的总大小:75 GB
        • Lambda 函数部署包大小(压缩的 .zip/.jar 文件):50 MB
        • 可以压缩到部署包中的代码/依赖项的大小(未压缩的 .zip/.jar 大小):250 MB
        • 环境变量集的总大小:4 KB

        【讨论】:

        • 我知道 Lambda 的局限性,但我在无服务器框架中遇到了这个问题。
        猜你喜欢
        • 2018-02-13
        • 1970-01-01
        • 2021-08-29
        • 2020-08-20
        • 1970-01-01
        • 2016-09-16
        • 2019-01-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多