Fn::FindInMap devuelve el valor que corresponde a las claves de un mapa de dos niveles declarado en la sección Mappings.
Declaración
-
JSON
{ "Fn::FindInMap": [ "MapName", "TopLevelKey", "SecondLevelKey" ] } -
YAML
-
Sintaxis para el nombre completo de la función:
Fn::FindInMap: - MapName - TopLevelKey - SecondLevelKey -
Sintaxis para la forma abreviada:
!FindInMap [MapName,TopLevelKey,SecondLevelKey]
-
Parámetros
MapName: el nombre de un mapa declarado en la sección Mappings. Para obtener más información, consulte Mappings.TopLevelKey: la clave de nivel superior. El valor consiste en pares clave-valor.SecondLevelKey: la clave de segundo nivel. El valor es una cadena o un número.
Valor devuelto
El valor asignado a SecondLevelKey.
Ejemplos
En el siguiente ejemplo se especifica la propiedad ImageId para un recurso llamado WebServer. Se utiliza regionParam en la sección Parameters para especificar regiones y RegionMap en la sección Mappings para asignar cada región a un ImageId. Fn::FindInMap busca el ImageId en RegionMap según la región especificada.
El parámetro
MapNamese establece enRegionMap.El parámetro
TopLevelKeyse establece en la región donde se crea la pila. En este ejemplo, el parámetro se determina mediante! Ref regionParam. Para obtener más información, consulte Ref.El parámetro
SecondLevelKeyse establece en la arquitectura deseada. En este ejemplo, se utiliza"32".
ROSTemplateFormatVersion: '2015-09-01'
Parameters:
regionParam:
Description: 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: !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": "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"
}
]
}
}
}
}