我正在寻找有关cloudformation的小帮助,无法从文档中找到帮助,或者可能没有以正确的方式搜索问题。
这是一个问题。
我从映射获取环境的可用区域如下。
"AvailabilityZone": {
"Fn::Select": [
"1",
{
"Fn::FindInMap": [
"Environment",
{
"Ref": "EnvType"
},
"AvailabilityZones"
]
}
]
}
我需要在卷命名约定中使用AZ名称。如何再次引用派生变量“AvailabilityZone”。?
目前我正在这样做。
{
"Key": "Name",
"Value": {
"Fn::Join": [
"-",
[
{
"Ref": "NamePrefix"
},
{
"Ref": "EnvType"
},
"myconstant",
{
"Fn::Select": [
"2",
{
"Fn::Split": [
"-",
{
"Fn::Select": [
"1",
{
"Fn::FindInMap": [
"Environment",
{
"Ref": "EnvType"
},
"AvailabilityZones"
]
}
]
}
]
}
]
}
]
]
}
}
我两次做同样的代码。 我如何在这里重复使用派生变量。?
答案 0 :(得分:12)
不幸的是,简短的回答是你不能。希望有一天AWS支持CloudFormation中的变量。
有些黑客可能会感兴趣。强调 hack !
GetAtt
来引用该值。 (http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-custom-resources.html)AWS::Include
转换来引用S3中的模板片段(http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/create-reusable-transform-function-snippets-and-add-to-your-template-with-aws-include-transform.html),在这种情况下,您当然不会真正使用变量。答案 1 :(得分:-3)
只需使用参数
Parameters:
DerivedVariable:
Type: String
Default: "MyDerivedVariable"
然后,您可以使用!Ref "DerivedVariable"
注意:由于这是一个参数,因此可以在通过CLI创建堆栈时覆盖它。更多信息可以在文档中找到:
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html