常见的AWS Cloudformation CodePipeline部署代码段如下所示:
- Name: CreateChangeSet
ActionTypeId:
Category: Deploy
Owner: AWS
Version: '1'
Provider: CloudFormation
Configuration:
ActionMode: CHANGE_SET_REPLACE
RoleArn: ...
StackName: ...
ChangeSetName: deploy-commit
TemplatePath: ...
Capabilities: CAPABILITY_IAM
InputArtifacts:
- Name: ...
RunOrder: 1
- Name: ExecuteChangeSet
ActionTypeId:
Category: Deploy
Owner: AWS
Provider: CloudFormation
Version: '1'
Configuration:
ActionMode: CHANGE_SET_EXECUTE
ChangeSetName: deploy-commit
RoleArn: ..
StackName: ...
RunOrder: 2
我们创建一个变更集并执行。有没有一种模式或方法可以使每个新发行版获得唯一的ChangeSetName
。原因CHANGE_SET_REPLACE
删除了前一个,并创建了一个同名的新,因此我们丢失了历史记录。
答案 0 :(得分:1)
您的源操作(GitHub或CodeCommit)应该已经具有更改历史记录。但是不幸的是,根据您的请求,CodePipeline的CloudFormation不支持为每次执行创建具有不同名称的更改集。以下链接列出了所有可能的操作模式,并且每种模式都不支持为每次执行创建具有不同名称的更改集。 https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/continuous-delivery-codepipeline-action-reference.html#w2ab1c13c13b9
满足您需要的一种可能方法是使用CodeBuild,Lambda调用或自定义操作类型编写自己的自定义CloudFormation操作类型。您可以使用自己的实现来调用CloudFormation API,以使用新名称创建变更集并部署变更集。有关自定义操作类型的更多信息,请访问https://docs.aws.amazon.com/codepipeline/latest/userguide/actions-create-custom-action.html