映射是一个Key-Value映射表。在模板的Resources和Outputs中,可以使用Fn::FindInMap内部函数,通过指定Key而获取映射表的Value。
语法
映射由Key-Value对组成。其中Key和Value可以为字符串类型或者数字类型。如果声明多个映射,用半角逗号(,)分隔开。每个映射的名称不能重复。映射须为纯数据,映射不会解析函数。
示例
正确的映射示例。
"Mappings": {
"ValidMapping": {
"TestKey1": {"TestValu1": "value1"},
"TestKey2": {"TestValu2": "value2"},
1234567890: {"TestValu3": "value3"},
"TestKey4": {"TestValu4": 1234}
}
}
错误的映射示例。
"Mappings": {
"InvalidMapping1": {
"ValueList": ["foo", "bar"],
"ValueString": "baz"
},
"InvalidMapping2": ["foo", {"bar" : "baz"}],
"InvalidMapping3": "foobar"
}
使用内部函数Fn::FindInMap返回对应的值示例。
{
"ROSTemplateFormatVersion": "2015-09-01",
"Parameters": {
"regionParam": {
"Description": "选择创建ECS的地域",
"Type": "String",
"AllowedValues": [
"hangzhou",
"beijing"
]
}
},
"Mappings": {
"RegionMap": {
"hangzhou": {
"32": "m-25l0rcfjo",
"64": "m-25l0rcfj1"
},
"beijing": {
"32": "m-25l0rcfj2",
"64": "m-25l0rcfj3"
}
}
},
"Resources": {
"WebServer": {
"Type": "ALIYUN::ECS::Instance",
"Properties": {
"ImageId": {
"Fn::FindInMap": [
"RegionMap",
{
"Ref": "regionParam"
},
"32"
]
},
"InstanceType": "ecs.t1.small",
"SecurityGroupId": "sg-25zwc****",
"ZoneId": "cn-beijing-b",
"Tags": [
{
"Key": "Department1",
"Value": "HumanResource"
},
{
"Key": "Department2",
"Value": "Finance"
}
]
}
}
}
}