Работает ли FindInMap внутри Fn :: If с выбором массива? - PullRequest
0 голосов
/ 26 марта 2020

У нас есть этот шаблон CFT.

Отображение для non-prod не существует, следовательно, условие 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 оценить, если условие ложно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...