【问题标题】:Versioning change sets in AWS Codepipeline and CloudformationAWS Codepipeline 和 Cloudformation 中的版本控制变更集
【发布时间】:2018-10-27 08:47:01
【问题描述】:

一个常见的 AWS Cloudformation CodePipeline deploy sn-p 如下所示:

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

【问题讨论】:

  • 从未使用过这些特定服务,但您不能让 Coudbuild 输出 git 并在调用 CloudFormation 模板时将其用作参数吗?然后使用类似ChangeSetName: !Sub 'deploy-commit-${ShaCodebuild}'
  • 我希望我能做到,但不可能。 CodeBuild 仅导出作为文件的工件。

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


【解决方案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

【讨论】:

  • 嘿,谢谢您的回答。似乎没有直接的方法可以得到我想要的东西。自定义操作看起来很有趣,我认为值得探索。
  • 自定义操作和 lambda 似乎工作量太大。我想我将不得不接受我的问题。
猜你喜欢
  • 2021-02-23
  • 1970-01-01
  • 1970-01-01
  • 2019-01-06
  • 1970-01-01
  • 2020-10-04
  • 2013-02-21
  • 2019-06-09
  • 1970-01-01
相关资源
最近更新 更多