部署无服务器项目已开始返回以下错误
配置堆栈时发生错误... [lambda name] [GUID] - 超出代码存储限制..
我已经尝试删除zip包,认为S3存储桶中可以存储多少个上传包,但没有运气。
正如Trent在下面提到的那样,我已经看过了部署限制,但是压缩包装为2.1MB(8MB未压缩),我无法看到超出限制的范围。
有关可能导致此问题的任何建议。
(我的)解决方案:
我希望能够更好地理解潜在的问题,并希望将此作为最后的手段。但是,通过从cloudformation中删除堆栈并重新部署无服务器项目,问题已经解决了。
答案 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);
});`