我可以在 AWS Cloudformation json 模板的 "Parameters" 中使用 "Fn::Join"
Can I use "Fn::Join" in "Parameters" of AWS Cloudformation json template
我想在 Cloudformation 的参数中使用 json 一些 Policy/Loadbalancers 标签名称的模板快捷方式,例如:
"SomeScalingGroupName": {
"Type": "String",
"Default": {"Fn::Join": ["", ["Process-", {"Ref": "Env"}, "-Some-Worker-Name"]]}
},
我得到错误:
Template validation error: Template format error: Every Default
member must be a string.
所以我的问题是在参数中使用函数连接的正确方法吗?或者我他们有任何其他方法可以做到这一点?或者您有更好的使用建议吗?
谢谢!
您不能在模板的参数部分使用内部函数。
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
您需要在资源属性中使用此功能。例如:
"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' 标签应用于您的负载均衡器,其值为 'process-test-my-worker'。您还可以在资源属性中的任何其他地方使用相同的功能。
我想在 Cloudformation 的参数中使用 json 一些 Policy/Loadbalancers 标签名称的模板快捷方式,例如:
"SomeScalingGroupName": {
"Type": "String",
"Default": {"Fn::Join": ["", ["Process-", {"Ref": "Env"}, "-Some-Worker-Name"]]}
},
我得到错误:
Template validation error: Template format error: Every Default member must be a string.
所以我的问题是在参数中使用函数连接的正确方法吗?或者我他们有任何其他方法可以做到这一点?或者您有更好的使用建议吗?
谢谢!
您不能在模板的参数部分使用内部函数。
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
您需要在资源属性中使用此功能。例如:
"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' 标签应用于您的负载均衡器,其值为 'process-test-my-worker'。您还可以在资源属性中的任何其他地方使用相同的功能。