了解 AWS CodePipeline 中的 CloudFormationStackSet 和 CloudFormationStackInstances 操作

问题描述

tl:博士

在初始管道运行后,我无法让 CodePipeline 更新 CloudFormationStackInstances。

我正在尝试使用 CodePipeline 部署堆栈集和堆栈集实例。

我可能没有正确理解这些概念,我的管道如下:

        - Name: Testing
          Actions:
            - ActionTypeId:
                Category: Deploy
                Owner: AWS
                Provider: CloudFormationStackSet
                Version: '1'
              Runorder: 1
              Configuration:
                AdministrationRoleArn: !Sub arn:aws:iam::${AWS::AccountId}:role/AWSCloudFormationStackSetAdministrationRole
                DeploymentTargets: !Ref TestingAccountId
                Regions: eu-west-1
                PermissionModel: SELF_MANAGED
                StackSetName: !Ref StackSetName
                TemplatePath: 'SourceArtifact::dummy.yml'
                Parameters: ParameterKey=ParamValue,ParameterValue=testing
              OutputArtifacts: []
              InputArtifacts:
                - Name: SourceArtifact
              Namespace: Testing
              Name: Testing


            - Name: ApproveStaging
              ActionTypeId:
                Category: Approval
                Owner: AWS
                Provider: Manual
                Version: '1'
              Runorder: 2


        - Name: Staging
          Actions:
            - ActionTypeId:
                Category: Deploy
                Owner: AWS
                Provider: CloudFormationStackInstances
                Version: '1'
              Runorder: 1
              Configuration:
                DeploymentTargets: !Ref StagingAccountId
                Regions: eu-west-1,us-east-1
                StackSetName: !Ref StackSetName
                ParameterOverrides: ParameterKey=ParamValue,ParameterValue=staging
              OutputArtifacts: []
              InputArtifacts:
                - Name: SourceArtifact
              Namespace: Staging
              Name: Staging

我想在一个帐户中推出更改,然后在其他帐户和地区进行审核和推出。

我观察到的是管道第一次正确运行。

如果我对 Cloudformation 模板进行更改并再次运行管道,则:

  • 一个帐户随着添加到 模板,管道会根据需要暂停。
  • 我检查了 Cloudformation 和第二个中的堆栈集实例
    帐户 StackInstance 按预期显示“过时”状态。
  • 我继续管道,它显示了下一个帐户的阶段
    已完成。
  • 我检查了 Cloudformation 中的堆栈集实例和第二个帐户 StackInstance 显示为“当前”,堆栈集的模板反映了我在初始管道运行后所做的更改。

到目前为止一切都很好,但是当我检查第二个帐户的 Cloudformation 堆栈时,我在初始管道运行后对 Cloudformation 模板所做的更改没有更新。

我已经检查并仔细检查过,但似乎 CloudFormationStackInstances 操作创建了但随后从未更新堆栈实例。

我希望能够推出更改并首先预览它们,并且还在堆栈实例级别拥有 ParameterOverrides。

可能我不明白如何在 CodePipeline 中正确使用 Stacksets。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)