Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Serverless framework 无服务器部署错误-超出代码存储限制_Serverless Framework - Fatal编程技术网

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

Serverless framework 无服务器部署错误-超出代码存储限制,serverless-framework,Serverless Framework,my serverless项目的部署已开始返回以下错误 设置堆栈时出错。。。[lambda name][GUID]-超出了代码存储限制 我尝试过删除zip包,认为S3存储桶中可以存储多少上传包是有限制的,但运气不好 正如下面特伦特所提到的,我已经查看了部署限制,但是对于2.1MB(8MB未压缩)的压缩包,我看不出会超出什么限制 任何关于这可能是什么原因的建议 (我的)解决方案: 我希望能更好地理解潜在的问题,并希望在万不得已的情况下这样做。但是,通过从cloudformation中删除堆栈并重新

my serverless项目的部署已开始返回以下错误

设置堆栈时出错。。。[lambda name][GUID]-超出了代码存储限制

我尝试过删除zip包,认为S3存储桶中可以存储多少上传包是有限制的,但运气不好

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

任何关于这可能是什么原因的建议

(我的)解决方案:

我希望能更好地理解潜在的问题,并希望在万不得已的情况下这样做。但是,通过从cloudformation中删除堆栈并重新部署无服务器项目,问题已经解决了。

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


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

Lambda会在每次部署中创建一个版本的函数,因此频繁的部署可能会导致存储问题。您的解决方案是正确的,但是您也可以通过编写一个简单的脚本来删除其他未使用的函数版本

首先,您希望获得函数的版本

`const params = {
  FunctionName: 'functionName'
};
lambda.listVersionsByFunction(params, function(err, data) {
  if (err) console.log(err, err.stack);
  else     console.log(data);
});`
然后决定要删除哪些

`const params2 = {
  FunctionName: 'functionName',
  Qualifier: '1' //version of your function you want to delete
};
lambda.deleteFunction(params2, function(err, data) {
  if (err) console.log(err, err.stack);
  else     console.log(data);
});`

对于其他通过谷歌找到这个的人,希望这能有所帮助

原因是什么?

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

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

解决方案1

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

provider:
  name: aws
  versionFunctions: false
解决方案2

或者,您可以手动删除较旧的Lambda版本。您可以使用无服务器剪枝插件为您实现流程自动化。该插件可以用于一次性清理,也可以在serverless.yml中配置,以便在每次部署后自动删除较旧的Lambda版本


下面是有关此错误的更多详细信息-

谢谢Trent。压缩的无服务器软件包为2.1MB,未压缩的为8.1MB。这似乎没有超过任何部署限制。奇怪的是,使用“sls deploy”命令部署很好,对代码进行了一行小的更改,然后进行了重新部署,突然出现了此错误消息。在这种情况下,lambda的早期版本太多,需要清除它们。创建新的无服务器应用程序也存在同样的问题,对于不同的帐户,我的工作很好。我有相同的问题,我试图只部署hello world函数。还有其他解决办法吗。