简体   繁体   中英

Can I use "Fn::Join" in "Parameters" of AWS Cloudformation json template

I want to use in Parameters of Cloudformation json template shortcut of some Policy/Loadbalancers tags name, like that:

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

And I get error:

Template validation error: Template format error: Every Default member must be a string.

So my question if that proper way to use function join in Parameters? Or I they have any other way to do that? Or you have any better suggestions to using that?

Thanks!

You cannot use intrinsic functions within the parameters section of your template.

You can use intrinsic functions only in specific parts of a template. Currently, you can use intrinsic functions in resource properties, metadata attributes, and update policy attributes.

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

You will need use this function within your resource properties. For example:

"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" }]]}},
      ]
    }
  }
}

This will apply a 'Name' tag to your Load Balancer with a value of 'process-test-my-worker'. You can also use this same function anywhere else within the properties of your resources.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM