AWS Codepipeline和Cloudformation中的版本变更集

时间:2018-10-26 13:23:10

标签: amazon-web-services amazon-cloudformation aws-codepipeline

常见的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删除了前一个,并创建了一个同名的新,因此我们丢失了历史记录。

1 个答案:

答案 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