Если еще условие облачности - PullRequest
0 голосов
/ 16 мая 2019

Я хотел бы заполнить значение в облачной информации в зависимости от входного параметра.Я хочу присвоить Name как test-svc.abc.com или svc.abc.com в зависимости от того, является ли имя среды prod или нет.Если имя среды prod, то значение должно быть svc.abc.com, в противном случае оно всегда должно быть {env-name}-svc.abc.com.

. У меня есть следующее выражение:

Name: !Join [ '-', [ !Ref EnvironmentName, !Ref 'HostedZoneName' ] ]

В приведенном выше выраженииHostedZoneName будет передано как svc.abc.com, а значение EnvironmentName может быть test, release or prod.Таким образом, условия должны оцениваться как:

Inputs: HostedZoneName -> svc.abc.com, EnvironmentName -> test
Output: test-svc.abc.com

Inputs: HostedZoneName -> svc.abc.com, EnvironmentName -> release
Output: release-svc.abc.com

Inputs: HostedZoneName -> svc.abc.com, EnvironmentName -> 1234567
Output: 1234567-svc.abc.com

Inputs: HostedZoneName -> svc.abc.com, EnvironmentName -> prod
Output: svc.abc.com

Это в основном троичный оператор.

Name = EnvironmentName.equals("prod") ? HostedZoneName : EnvironmentName + "-" + HostedZoneName

Борьба с условием if else в CloudFormation.

Ответы [ 2 ]

2 голосов
/ 16 мая 2019

Взгляните на Условия облачной информации . Вы можете использовать их для определения операторов if, используя Fn::If

Затем вы можете использовать это условие в разделе Ресурсы, чтобы определить, как создать HostedZoneName.

Вот пример. Вам, вероятно, нужно сделать что-то вроде этого:

...
 "Conditions" : {
    "CreateProdResources" : {"Fn::Equals" : [{"Ref" : "EnvType"}, "prod"]}
  },

...

"Properties" : {
    "HostedZoneName" : {
      "Fn::If" : [
        "CreateProdResources",
        "svn.abc.com",
        {"Fn::Sub": "${Environment}-svc.abc.com"}
      ]}
  },
0 голосов
/ 16 мая 2019

Основываясь на ответе @rdas, я реализовал приведенное ниже выражение в формате YAML:

...
Conditions: 
  IsProductionEnvironment: !Equals [ !Ref EnvironmentName, prod ]
...

...
Name: !If [IsProductionEnvironment, !Ref 'HostedZoneName', !Join [ '-', [ !Ref EnvironmentName, !Ref 'HostedZoneName' ] ]]
...
...