我正在为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"行动是这些:
如果有人可以帮助我了解如何在AWS中使用CodePipeline以简单快速的方式回滚Lambda函数,那将是非常好的。谢谢!