无服务器部署错误 - 超出代码存储限制

Ada*_*dam 6 serverless-framework

我的无服务器项目的部署已开始返回以下错误

配置堆栈时发生错误...[lambda 名称][GUID] - 超出代码存储限制..

我尝试删除 zip 包,认为 S3 存储桶中可以存储的上传包数量有限制,但没有成功。

正如 Trent 下面提到的,我查看了部署限制,但对于 2.1MB 的压缩包(未压缩的 8MB),我看不出会超出什么限制。

关于可能导致此问题的任何建议。

(我的)解决方案:

我希望更好地了解根本问题,并希望将其作为最后的手段。但通过从 cloudformation 中删除堆栈并重新部署无服务器项目,问题似乎已自行解决。

小智 7

对于通过谷歌找到此内容的其他人,希望这有所帮助。

是什么原因造成的?

AWS 对每个区域可上传的所有部署包的大小限制为 75GB。这包括您的所有 Lambda 函数及其在给定区域中组合的所有历史版本。

如果您有大量已部署多次的 Lambda 函数,则可能会发生此错误。每个部署都会创建一个版本,并且这个版本会随着时间的推移而增加。

解决方案1

如果您不需要对 Lambda 函数进行版本控制,则可以通过在 serverless.yml 中进行设置来关闭 Lambda 版本控制。

provider:
  name: aws
  versionFunctions: false
Run Code Online (Sandbox Code Playgroud)

解决方案2

或者,您可以手动删除较旧的 Lambda 版本。您可以使用 serverless-prune-plugin 来自动执行该过程。该插件可用于执行一次性清理,也可以在 serverless.yml 中配置为在每次部署后自动修剪旧的 Lambda 版本。

以下是有关此错误的更多详细信息 - https://seed.run/docs/serverless-errors/code-storage-limit-exceeded


小智 2

http://docs.aws.amazon.com/lambda/latest/dg/limits.html

无论内存分配如何,每个 Lambda 函数都分配有固定数量的特定资源,并且每个函数都为每个函数和每个账户分配固定数量的代码存储。

Lambda 有调用限制,但也有部署限制,这就是您的问题所在。查看限制并找出哪一项被违反。