Могу ли я положить fn :: join внутри оператора fn :: if при формировании cftemplate? - PullRequest
0 голосов
/ 22 января 2019

У меня есть ситуация, когда мое приложение развернуто в другой среде (prod и stage).у меня есть общий cftemplate.json со следующим параметром

"Parameters" : {
    "EnvType" : {
      "Description" : "Environment type.",
      "Default" : "test",
      "Type" : "String",
      "AllowedValues" : ["prod", "stage"],
      "ConstraintDescription" : "must specify prod or test."
    }
  },

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

Теперь у меня есть сигнал тревоги,

"AppServerHealthCheckAlarm":{
     "Type":"AWS::CloudWatch::Alarm",
     "Properties":{
        "AlarmName" : {"Fn::Join" : ["", [
           {"Ref" : "AppId"}, ",",
           {"Ref" : "AppServerAG"}, ":", "HealthCheck", ",", "MAJOR"]]},
 ------
 ------
 ------
  }
},

Теперь я хочу поместить это fn :: join в условие fn :: ifтак что для прод это должно быть основным, а для стадии должно быть второстепенным.

Как мне настроить

1 Ответ

0 голосов
/ 22 января 2019

Я думаю, что вместо того, чтобы обернуть Fn::Join в Fn::If, лучше наоборот.Это должно работать просто отлично:

{
    "AlarmName":
    {"Fn::Join": ["",
                  [{"Ref" : "AppId"},
                   ",",
                   {"Ref" : "AppServerAG"},
                   ":",
                   "HealthCheck",
                   ",",
                   {"Fn::If": ["CreateProdResources", "MAJOR", "MINOR"]}
                  ]
    ]}
}
...