我在AWS上部署无服务器应用时出现了错误代码存储限制超出,总大小为409 B。
错误消息如下:
发生错误:HelloLambdaFunction - 代码存储限制超出。 (服务:AWSLambda; 状态码:400; 错误代码:CodeStorageExceededException; 请求ID:...)
我在AWS上部署无服务器应用时出现了错误代码存储限制超出,总大小为409 B。
错误消息如下:
发生错误:HelloLambdaFunction - 代码存储限制超出。 (服务:AWSLambda; 状态码:400; 错误代码:CodeStorageExceededException; 请求ID:...)
针对与无服务器有关的问题,我特别寻找到了https://github.com/serverless/serverless/issues/400。这是无服务器框架已知的一个问题。然而,一些创业者创建了一个解决方案来解决这个问题,使用一个插件能够修剪旧版本: https://github.com/claygregory/serverless-prune-plugin。这使您可以清除旧版本和代码存储而不删除整个堆栈。
例如,您可以使用以下命令删除除最后10个版本外的所有版本:
sls prune -n 10
还有更进一步的选项来限制阶段或区域。更好的是,可以将插件集成到部署中,自动删除除x版本外的所有版本。
我在我的当前无服务器项目中使用了这个插件,它兑现了承诺。
根据发布版本 - AWS Lambda文档,CodeStorageExceededException
的意思是:
您已超出账户的最大代码总大小限制。
根据AWS Lambda限制 - AWS Lambda文档:
如上所述,每个区域可上传的部署包总大小为75 GB。因此,如果我们设置
默认情况下,框架会为每次部署创建函数版本。这种行为是可选的,在您不通过其限定符调用过去版本的情况下,可以关闭它。如果您想要这样做,可以调用arn:aws:lambda:....:function/myFunc:3来调用版本3。
要关闭此功能,请设置提供程序级别的选项versionFunctions。
provider: versionFunctions: false
我解决了这个问题,使用sls remove
命令删除云形成堆栈,并使用sls deploy
命令部署无服务器项目。这对我起作用。
aws cloudformation continue-update-rollback
,可以解决由于 CodeStorageExceededException
导致栈无法更新而陷入 UPDATE_ROLLBACK_FAILED
状态的问题。请参考以下链接:请求增加 AWS Lambda 函数和层的存储配额,调用 aws cloudformation continue-update-rollback,以及 确认请求已经获批。保留 HTML 标签,请注意格式要求。sls prune
,但是在您的zappa_settings.json
中使用"num_retained_versions": 10
(或者您关心的保留值)即可。正如已经提到的,您的区域有一定的版本配额,不清楚何时会达到限制,但当您达到限制时,找出原因非常麻烦。
E:\ git \ serverless> sls prune -n 20
Serverless:Prune:正在查询已部署的函数版本 Serverless:Prune:dev-insertData已发布116个附加版本和0个别名,选择删除96个版本 Serverless:Prune:正在删除Function dev-insertData v118 ... Serverless:Prune:正在删除Function dev-insertData v117 ... 。 : Serverless:Prune:正在删除Function dev-insertData v23 ...
- nbs