I am looking for small help in CloudFormation and could not find help from documentation or may be not searching the question in right way.
Here is the question.
I am getting availability zones for the environment from mappings as follows.
"AvailabilityZone": {
"Fn::Select": [
"1",
{
"Fn::FindInMap": [
"Environment",
{
"Ref": "EnvType"
},
"AvailabilityZones"
]
}
]
}
I need to use the AZ name in my volume naming convention. How could refer the derived variable "AvailabilityZone" again.?
Currently i am doing this.
{
"Key": "Name",
"Value": {
"Fn::Join": [
"-",
[
{
"Ref": "NamePrefix"
},
{
"Ref": "EnvType"
},
"myconstant",
{
"Fn::Select": [
"2",
{
"Fn::Split": [
"-",
{
"Fn::Select": [
"1",
{
"Fn::FindInMap": [
"Environment",
{
"Ref": "EnvType"
},
"AvailabilityZones"
]
}
]
}
]
}
]
}
]
]
}
}
I am doing the same code twice. How can i re-use the derived variable here.?
Unfortunately, the short answer is you can't. Hopefully someday AWS supports variables in CloudFormation.
There are some hacks that might be of interest. Emphasis on hack!
GetAtt
to refer to the value. (http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-custom-resources.html)AWS::Include
transform to refer to a template snippet in S3 (http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/create-reusable-transform-function-snippets-and-add-to-your-template-with-aws-include-transform.html), in that case you're not really using variables, off course.If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With