删除 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 不会重置版本号的主要内容,如果未能解决你的问题,请参考以下文章

WiX:更新“添加/删除程序”中显示的版本号

如何设计APP版本号?

Android多个Module统一配置相同jar或库的版本号

php 删除WordPress版本号

PHP WordPress - 从头部删除版本号

PHP 删除Wordpress版本号