Fungsi bawaan Fn::FindInMap mengembalikan nilai yang sesuai dengan kunci dalam pemetaan dua tingkat yang dideklarasikan di bagian Mappings.
Deklarasi
JSON
{ "Fn::FindInMap": [ "MapName", "TopLevelKey", "SecondLevelKey" ] }YAML
Sintaks untuk nama fungsi lengkap:
Fn::FindInMap: - MapName - TopLevelKey - SecondLevelKeySintaks untuk bentuk singkat:
!FindInMap [MapName,TopLevelKey,SecondLevelKey]
Parameter
MapName: Nama pemetaan yang dideklarasikan di bagian Mappings. Untuk informasi lebih lanjut, lihat Mappings.TopLevelKey: Kunci tingkat atas. Nilainya terdiri dari pasangan kunci-nilai.SecondLevelKey: Kunci tingkat kedua. Nilainya adalah string atau angka.
Nilai pengembalian
Nilai yang ditetapkan ke parameter SecondLevelKey.
Contoh
Sebagai contoh, Anda ingin menentukan properti ImageId saat membuat sumber daya bernama WebServer. Dalam hal ini, Anda dapat menggunakan regionParam di bagian Parameters untuk menentukan wilayah dan RegionMap di bagian Mappings untuk menentukan pemetaan ImageId di setiap wilayah. Dengan cara ini, Fn::FindInMap memeriksa pemetaan ImageId yang ditentukan di RegionMap berdasarkan wilayah yang dipilih serta properti ImageId yang diperlukan dalam pemetaan tersebut.
Parameter
MapNamedisetel keRegionMap.Parameter
TopLevelKeydisetel ke wilayah tempat stack dibuat. Dalam contoh ini, parameter ditentukan menggunakan!Ref regionParam. Untuk informasi lebih lanjut, lihat Ref.Parameter
SecondLevelKeydisetel ke arsitektur yang diinginkan. Dalam contoh ini,"32"digunakan.
ROSTemplateFormatVersion: '2015-09-01'
Parameters:
regionParam:
Description: wilayah tempat Anda ingin membuat instance 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": "wilayah tempat Anda ingin membuat instance 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"
}
]
}
}
}
}