組み込み関数 Fn::FindInMap は、Mappings セクションで宣言されている 2 レベルのマッピングのキーに対応する値を返します。
宣言
JSON
{ "Fn::FindInMap": [ "MapName", "TopLevelKey", "SecondLevelKey" ] }YAML
完全な関数名の構文:
Fn::FindInMap: - MapName - TopLevelKey - SecondLevelKey短縮形の構文:
!FindInMap [MapName,TopLevelKey,SecondLevelKey]
パラメーター
MapName: Mappings セクションで宣言されているマッピングの名前です。詳細については、Mappings をご参照ください。TopLevelKey: トップレベルキーです。値はキーと値のペアで構成されます。SecondLevelKey: セカンドレベルキーです。値は文字列または数値です。
戻り値
SecondLevelKey パラメーターに割り当てられている値です。
例
たとえば、WebServer という名前のリソースを作成するときに、ImageId プロパティを指定するとします。この場合、Parameters セクションの regionParam を使用してリージョンを指定し、Mappings セクションの RegionMap を使用して各リージョンの ImageId マッピングを指定できます。このようにして、Fn::FindInMap は、指定されたリージョンに基づいて RegionMap 内の指定された 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 インスタンスを作成するリージョン", // the region where you want to create the ECS instance
"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"
}
]
}
}
}
}