删除 Lambda 不会重置版本号
Posted
技术标签:
【中文标题】删除 Lambda 不会重置版本号【英文标题】:Deleting Lambda Doesn't Reset Version Number 【发布时间】:2021-12-29 13:37:39 【问题描述】:我正在处理 CloudFormation 模板,并注意到 Lambda 的复杂性,这对我来说是新的。这是一个sn-p:
VersionLambdaRandom:
Type: AWS::Lambda::Version
Properties:
Description: Version testing.
FunctionName: !Sub "arn:$AWS::Partition:lambda:$AWS::Region:$AWS::AccountId:function:$LambdaRandom"
DependsOn: LambdaRandom
AliasLambdaRandom:
Type: AWS::Lambda::Alias
Properties:
FunctionName: !Sub "arn:$AWS::Partition:lambda:$AWS::Region:$AWS::AccountId:function:$LambdaRandom"
FunctionVersion: '1'
Name: TestDeploymentAlias
DependsOn:
- LambdaRandom
- VersionLambdaRandom
在向上和向下旋转此堆栈的过程中,删除了版本和别名以及此处未包含的随机 Lambda,我注意到当我再次创建堆栈时版本号不会重置。本质上,我将再次创建堆栈,并且在部署过程中会出现以下故障:
Function not found: arn:aws:lambda:us-east-1:<Acct#>:function:RandomLambdaFunction:1 (Service: AWSLambdaInternal; Status Code: 404; Error Code: ResourceNotFoundException)
查看控制台,可以看到新创建的函数的一个版本创建成功;但是,它现在是版本 2 而不是版本 1。这对我来说似乎很奇怪,因为我完全删除了堆栈,其中包括删除 lambda 和版本。
除了每次切换函数名之外,我还能做些什么来确保创建堆栈时创建的版本始终保持为一个?
【问题讨论】:
为什么要关心版本号?改为引用AWS::Lambda::Version
的输出。
相关:where is AWS Lambda version stored?
进展如何?仍然不清楚为什么不能删除版本?
@Marcin - 已回复。
【参考方案1】:
Lambda 版本是不可变的。这就是版本控制的全部意义——一旦发布,您就无法更改它们,包括删除它们。您还必须删除您的函数才能读取其版本。
【讨论】:
这就是我正在做的。删除整个堆栈,包括 lambda 函数,当我再次创建堆栈时,版本号仍然存在。以上是关于删除 Lambda 不会重置版本号的主要内容,如果未能解决你的问题,请参考以下文章