【问题标题】:Deleting Lambda Doesn't Reset Version Number删除 Lambda 不会重置版本号
【发布时间】: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 的输出。
  • 进展如何?仍然不清楚为什么不能删除版本?
  • @Marcin - 已回复。

标签: amazon-web-services aws-lambda amazon-cloudformation


【解决方案1】:

Lambda 版本是不可变的。这就是版本控制的全部意义——一旦发布,您就无法更改它们,包括删除它们。您还必须删除您的函数才能读取其版本。

【讨论】:

  • 这就是我正在做的。删除整个堆栈,包括 lambda 函数,当我再次创建堆栈时,版本号仍然存在。
猜你喜欢
  • 1970-01-01
  • 2021-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-31
  • 2012-03-04
  • 2017-09-11
  • 2019-04-12
相关资源
最近更新 更多