如何回滚通过CloudFormation部署的AWS CodeStar Lambda函数?

时间:2018-04-23 15:48:16

标签: amazon-web-services continuous-integration aws-lambda continuous-deployment aws-codepipeline

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

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

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

不幸的是,看起来AWS的CloudFormation部分在这里没有提供任何帮助。当您在第一个CloudFormation页面上钻取堆栈时,它仅显示有关最新形成的信息。 尊敬的AWS CloudFormation工程师:如果每个堆栈都有一个页面显示该堆栈的CloudFormation历史记录以及回滚它的选项,那将非常棒。但就目前而言,并非如此。关于最新形成的信息,只是有关阴影的信息。一个最初很有前途的选择是" Rollback Triggers",但这实际上只是一些完全不同的东西,如果你的版本没有通过,你可以发送SNS通知。

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

  

操作执行失败UpdateStack不能与模板一起使用   包含变换。 (服务: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函数,那将是非常好的。谢谢!

0 个答案:

没有答案