amazon-web-services - 我可以将 fn::join 放在 cftemplate 形成中的 fn::if 语句内吗

标签 amazon-web-services aws-lambda aws-cloudformation devops

我遇到的情况是,我将应用程序部署在不同的环境(产品和阶段)中。 我有一个带有以下参数的通用 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 条件中,这样对于 prod 来说它应该是 Major ,对于 stage 来说它应该是 secondary 。

我应该如何配置它

最佳答案

我认为,与其将 Fn::Join 包装在 Fn::If 内,反之亦然更好。这应该可以正常工作:

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

关于amazon-web-services - 我可以将 fn::join 放在 cftemplate 形成中的 fn::if 语句内吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54307065/

相关文章:

security - 将数据上传到 S3 时,AWS CLI 是否使用 SSL?

amazon-web-services - 如何在多个 AWS Lambda 函数之间共享数据?

amazon-web-services - Chef : HOME environment variable (or HOMEDRIVE and HOMEPATH) must be set and point to a directory

amazon-web-services - CloudFormation 模板无法在元数据部分下创建 "files"

amazon-web-services - 使用 tomcat 服务器和 aws 负载均衡器将 http 请求重定向到 https

android - AWS Mobile Hub 示例项目中 PushManager 类的空对象引用

mysql - lambda查询RDS超时无报错

ruby - AWSCloudFormation - cfn-init 无法运行命令 `ruby`

amazon-web-services - 何时显式使用 boto3 session

node.js - 如何在 lambda 函数中从 DynamoDb 获取最后插入的数据