我可以使用" Fn :: Join" in"参数" AWS Cloudformation json模板

时间:2015-12-03 09:43:33

标签: json amazon-web-services amazon-cloudformation

我想在一些Policy / Loadbalancers标签名称的参数Cloudformation json模板快捷方式中使用,如:

"SomeScalingGroupName": {
            "Type": "String",
            "Default": {"Fn::Join": ["", ["Process-", {"Ref": "Env"}, "-Some-Worker-Name"]]}
        },

我得到错误:

  

模板验证错误:模板格式错误:每个默认值   成员必须是一个字符串。

所以我的问题是,在参数中使用函数连接的正确方法是什么?或者我还有其他办法吗?或者你有更好的建议来使用它吗?

谢谢!

1 个答案:

答案 0 :(得分:13)

您不能在模板的参数部分中使用内部函数。

  

您只能在模板的特定部分使用内部函数。   目前,您可以在资源属性中使用内部函数,   元数据属性和更新策略属性。

http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference.html

您需要在资源属性中使用此功能。例如:

"Parameters" : {
  "Env" : {
    "Type" : "String",
    "Default" : "test"
  },
  "WorkerName" : {
    "Type" : "String",
    "Default" : "my-worker"
  }
}

"Resources" : {
  "LoadBalancer" : {
    "Type" : "AWS::ElasticLoadBalancing::LoadBalancer",
    ...
    "Properties" : {
      "Tags" : [ 
        { "Key" : "Name", "Value": { "Fn::Join" : [ "-", [ "process", { "Ref" : "Env" }, { "Ref" : "SomeWorkerName" }]]}},
      ]
    }
  }
}

这会将“Name”标记应用于Load Balancer,其值为“process-test-my-worker”。您还可以在资源属性中的任何其他位置使用此功能。