2017-01-19 56 views
3

启用CloudFormation为CodePipeline使用条件语句/禁用部分:基于CloudFormation条件有条件创建CodePipeline行动

这将创建一个手工通知动作一次登台已经建成并通过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 

如何使用条件来启用/禁用此功能,就像其他CloudFormation资源一样:。

操作步骤不承认条件:PARAM

我可以让整个管道代码一种带有一个2份无,然后拨动该管道创建但是看起来应该有更好的方式。

回答

5

您应该能够通过有条件地将完成这一任务的AWS::CodePipeline::Pipeline资源的Action到使用Fn::If内在功能指引你Conditions元素,返回时的动作条件为真AWS::NoValue(删除属性,在此Actions列表情况从列表中删除的项目)时,它是不正确的:

- !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 
+0

AWS支持: “这是一个非常有趣的问题,我花了一段时间来考虑一下......好吧,我需要承认来自Stackoverflow的解决方案是最方便的解决方案之一模拟堆栈,它工作完美。“ –