我正在为AWS Lambda创建Nodejs微服务 . 我使用AWS Codestar通过项目搭建了支架,并为我设置了一个自动部署lambda函数的CI / CD管道 . 尼斯 .

问题是,每次部署lambda函数时,它必须删除并重新创建函数,从而删除我所做的任何版本或别名 .

这意味着我真的无法回滚到其他版本 . 我基本上使用git来实际恢复项目,推送到git,等待超慢的AWS Code Pipeline成功流过,然后让它重新制作功能 . 对我而言,这听起来像是一个非常糟糕的灾难恢复策略,我认为正确的回滚方式应该简单快捷 .

不幸的是,看起来AWS的CloudFormation部分在这里没有提供任何帮助 . 当您在第一个CloudFormation页面上钻取堆栈时,它仅显示有关最新形成的信息 . Dear engineers of AWS CloudFormation: if there was a page for each stack that showed a history of CloudFormation for this stack and an option to rollback to it, that would be really awesome . 但就目前而言,'s not. There'只是关于's been clouded. One initially promising option was 1552459 , but this is actually just something totally different that lets you send a SNS notification if your build doesn'传递的最新阵型的信息 .

当我尝试将部署的CodePipeline阶段从CREATE_CHANGE_SET更改为CREATE_UPDATE时,尝试执行时会出现此错误:

操作执行失败UpdateStack不能与包含Transforms的模板一起使用 . (服务:AmazonCloudFormation;状态代码:400;错误代码:ValidationError;请求ID:bea5f687-470b-11e8-a616-c791ebf3e8e1)

我的template.yml看起来像这样:

AWSTemplateFormatVersion: 2010-09-09
Transform:
- AWS::Serverless-2016-10-31
- AWS::CodeStar

Parameters:
  ProjectId:
    Type: String
    Description: AWS CodeStar projectID used to associate new resources to team members

Resources:
  HelloWorld:
    Type: AWS::Serverless::Function
    Properties:
      Handler: index.handler
      Runtime: nodejs8.10
      Environment:
        Variables:
          NODE_ENV: staging
      Role:
        Fn::ImportValue:
          !Join ['-', [!Ref 'ProjectId', !Ref 'AWS::Region', 'LambdaTrustRole']]
      Events:
        GetEvent:
          Type: Api
          Properties:
            Path: /
            Method: get
        PostEvent:
          Type: Api
          Properties:
            Path: /
            Method: post

CodePipeline“Deploy”操作中的唯一选项是:

enter image description here

如果有人可以帮助我了解如何在AWS中使用CodePipeline以简单快速的方式回滚Lambda函数,那将是非常好的 . 谢谢!