我正在为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”操作中的唯一选项是:
如果有人可以帮助我了解如何在AWS中使用CodePipeline以简单快速的方式回滚Lambda函数,那将是非常好的 . 谢谢!