FindInMap是否可以在Fn :: If内部使用数组选择?

时间:2020-03-25 21:19:29

标签: amazon-web-services if-statement amazon-cloudformation

我们有这个CFT模板。

不存在非产品的映射,因此存在If条件。但是,当我们应用脚本时,如果condIsProd的计算结果为false,则FindInMap函数仍会计算并且使CreateChangeSet进程崩溃。

SecurityGroupEgress:
        Fn::If:
          - condIsProd
          - - IpProtocol: tcp
              FromPort: !FindInMap [ mapSplunkEndpoints, !Ref paramEnvironmentType, port1 ]
              ToPort: !FindInMap [ mapSplunkEndpoints, !Ref paramEnvironmentType, port1 ]
              CidrIp: !Join ["/", [ !FindInMap [ mapSplunkEndpoints, !Ref paramEnvironmentType, port1 ], "32"]]
          - - IpProtocol: tcp
              FromPort: !FindInMap [ mapSplunkEndpoints, !Ref paramEnvironmentType, port2 ]
              ToPort: !FindInMap [ mapSplunkEndpoints, !Ref paramEnvironmentType, port2 ]
              CidrIp: !Join ["/", [ !FindInMap [ mapSplunkEndpoints, !Ref paramEnvironmentType, port2 ], "32"]]



这没有意义,因为条件为假,所以为什么仍然要评估嵌套函数。

有什么方法可以防止FindInMap评估条件是否为假?

0 个答案:

没有答案