調用內建函式Fn::FindInMap,返回Mappings中聲明的雙層映射中鍵(key)對應的值。
函式宣告
JSON
{ "Fn::FindInMap": [ "MapName", "TopLevelKey", "SecondLevelKey" ] }
YAML
完整函數的文法。
Fn::FindInMap: - MapName - TopLevelKey - SecondLevelKey
縮寫形式文法。
!FindInMap [MapName,TopLevelKey,SecondLevelKey]
參數資訊
MapName
:Mappings中定義的合集名稱。更多資訊,請參見映射(Mappings)。TopLevelKey
:Map合集中嵌套的第一級鍵(key),其值是一個索引值對列表。SecondLevelKey
:Map合集中嵌套的第二級鍵(key),其值是一個字串或者數字。
傳回值
返回SecondLevelKey中對應的值。
使用樣本
當建立名為WebServer資源時,需要指定ImageId屬性。您可以在Parameters中聲明指定的地區,在Mappings中聲明根據地區區分的ImageId映射。Fn::FindInMap會根據您指定的地區,在Map合集中尋找對應的ImageId映射,然後在映射中擷取對應的ImageId。
MapName
在本樣本中為RegionMap
。TopLevelKey
設定為建立資源棧的地區,在本樣本中通過! Ref regionParam
確定。更多資訊,請參見Ref。SecondLevelKey
設定為所需的架構,在本樣本中為"32"
。
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: !FindInMap [RegionMap, !Ref regionParam, "32"]
InstanceType: ecs.t1.small
SecurityGroupId: sg-25zwc****
ZoneId: cn-beijing-b
Tags:
- Key: key1
Value: value1
- Key: key2
Value: value2
{
"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": "key1",
"Value": "value1"
},
{
"Key": "key2",
"Value": "value2"
}
]
}
}
}
}