常见的 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
删除了前一个并创建了一个同名的新的,因此我们丢失了历史记录。
最佳答案
您的源操作(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
关于amazon-web-services - AWS Codepipeline 和 Cloudformation 中的版本更改集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53009752/