【问题标题】:Conditionally create CodePipeline actions based on CloudFormation conditions根据 CloudFormation 条件有条件地创建 CodePipeline 操作
【发布时间】:2017-06-04 18:07:24
【问题描述】:

使用条件启用/禁用 CodePipeline 的 CloudFormation 部分:

一旦构建并通过 Runscope 测试,这将创建一个手动通知操作:

- InputArtifacts: []
      Name: !Join ["",[!Ref GitHubRepository, "-prd-approval"]]
      ActionTypeId:
        Category: Approval
        Owner: AWS
        Version: '1'
        Provider: Manual
      OutputArtifacts: []
      Configuration:
        NotificationArn: !GetAtt ["SNSApprovalNotification", "Outputs.SNSTopicArn"]
        ExternalEntityLink: OutputTestUrl
      RunOrder: 3

如何像其他具有 Condition: 的 CloudFormation 资源一样启用/禁用它。

操作步骤无法识别条件:参数

我可以制作整个管道代码的 2 个副本,一个有一个没有,然后切换我创建的管道,但似乎应该有更好的方法。

【问题讨论】:

    标签: amazon-cloudformation aws-codepipeline


    【解决方案1】:

    您应该能够通过使用引用您的 Conditions 元素的 Fn::If 内在函数有条件地将 AWS::CodePipeline::Pipeline 资源的 Action 插入到 Actions 列表中来完成此操作,当条件为真时返回操作,并且AWS::NoValue(删除属性,在这种情况下从列表中删除项目)当它不为真时:

    - !If
      - IsProdCondition
      - InputArtifacts: []
        Name: !Join ["",[!Ref GitHubRepository, "-prd-approval"]]
        ActionTypeId:
          Category: Approval
          Owner: AWS
          Version: '1'
          Provider: Manual
        OutputArtifacts: []
        Configuration:
          NotificationArn: !GetAtt ["SNSApprovalNotification", "Outputs.SNSTopicArn"]
          ExternalEntityLink: OutputTestUrl
        RunOrder: 3
      - !Ref AWS::NoValue
    

    【讨论】:

    • AWS 支持:“这是一个非常有趣的问题,我想了很久……好吧,我不得不承认 Stackoverflow 的解决方案是最方便的。而且我在我的模拟堆栈中进行了测试,效果很好。”
    • 我收到以下错误属性操作不能为空。
    猜你喜欢
    • 2019-05-13
    • 1970-01-01
    • 2023-02-23
    • 2022-06-28
    • 2019-05-07
    • 1970-01-01
    • 2020-03-16
    • 1970-01-01
    • 2017-12-09
    相关资源
    最近更新 更多