首页 > 解决方案 > Fn::If 内部的 CloudFormation 参数参考 Fn::Sub

问题描述

我正在尝试使用 Fn::Sub 替换字符串中的两个变量。问题是变量值是基于条件语句的。这怎么写才能正确?

"Fn::Sub":["https://${QS}.${CUR}.website.com, 
           {"QS": {"Fn::If": ["condition1", ${abc}-${AWS::Region}, ${abcq}]}},
           {"CUR": {"Fn::If": ["condition1", ${AWS::Region}, ${abcq}]}}
          ]

这里,condition1 是条件之一,abc 和 abcq 是参数。

标签: amazon-cloudformation

解决方案


您可以尝试以下方法。它可能需要一些调整,因为我无法运行实际代码来验证它。

我认为以下应该是实现您想要实现的目标的方法:

"Fn::Sub":
[
    "https://${QS}.${CUR}.website.com, 
    {"QS":  
        {
            "Fn::If": [
                "condition1", 
                {"Fn::Sub": "${abc}-${AWS::Region}"}, 
                {"Fn::Ref": "abcq"}    
            ]
        }
    },
    {"CUR": 
        {
        "Fn::If": [
                "condition1", 
                {"Fn::Ref": "AWS::Region"},    
                {"Fn::Ref": "abcq"}    
            ]
        }
    }
]

推荐阅读