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

时间:2017-09-04 20:51:07

标签: serverless-framework

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

  

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

我已经尝试删除zip包,认为S3存储桶中可以存储多少个上传包,但没有运气。

正如Trent在下面提到的那样,我已经看过了部署限制,但是压缩包装为2.1MB(8MB未压缩),我无法看到超出限制的范围。

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

(我的)解决方案:

我希望能够更好地理解潜在的问题,并希望将此作为最后的手段。但是,通过从cloudformation中删除堆栈并重新部署无服务器项目,问题已经解决了。

3 个答案:

答案 0 :(得分:2)

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

  

每个Lambda函数都分配有固定数量的特定资源,而不管内存分配如何,每个函数和每个帐户都分配了固定数量的代码存储空间。

Lambdas具有调用限制,但也有部署限制,这就是您的问题所在。查看限制并确定哪一个已被破坏。

答案 1 :(得分:1)

对于通过Google找到的其他人,希望对您有所帮助。

是什么原因造成的?

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

如果大量Lambda函数已被多次部署,则可能会发生错误。每个部署都会创建一个版本,并且可以随时间累加。

解决方案1 ​​

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

value = int(input('What is your value? '))

maxNumber = 0
minNumber = 0

while(value != 0):
    if(value > 0):
        maxNumber = max(value)
    else:
        minNumber = min(value)

    value = int(input('What is the next value? '))


print(maxNumber)
print(minNumber)

解决方案2

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

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

答案 2 :(得分:0)

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);
});`