Fn::FindInMap
La función Fn::FindInMap
intrínseca devuelve el valor correspondiente a claves en una asignación de dos niveles declarada en la sección Mappings
.
Para obtener más información sobre las mejoras de la función intrínseca Fn::FindInMap
cuando se utiliza la transformación de AWS::LanguageExtensions
, consulte Fn::FindInMap
enhancements.
Declaración
JSON
{ "Fn::FindInMap" : [ "
MapName
", "TopLevelKey
", "SecondLevelKey
"] }
YAML
Sintaxis del nombre de función completo:
Fn::FindInMap: [
MapName
,TopLevelKey
,SecondLevelKey
]
Sintaxis de la forma abreviada:
!FindInMap [
MapName
,TopLevelKey
,SecondLevelKey
]
No puede anidar dos instancias de dos funciones de manera abreviada.
Parámetros
- MapName
-
El nombre lógico de un mapeo declarado en la sección Mappings que contiene las claves y valores.
- TopLevelKey
-
El nombre de clave de nivel superior. Su valor es una lista de pares clave-valor.
- SecondLevelKey
-
El nombre de la clave de segundo nivel, que se ha establecido en una de las claves de la lista asignada a
TopLevelKey
.
Valor devuelto:
El valor que se ha asignado a SecondLevelKey
.
Ejemplo
El siguiente ejemplo muestra cómo utilizar Fn::FindInMap
para una plantilla con una sección Mappings
que contiene una única asignación, RegionMap
que asocia AMI con Regiones deAWS.
-
El mapa tiene 5 claves de nivel superior que corresponden a varias regiones de AWS.
-
A cada clave de nivel superior se le asigna una lista con dos claves de segundo nivel,
"HVM64"
y"HVMG2"
que corresponden a la arquitectura de la AMI. -
Se asigna a cada una de las claves de segundo nivel un nombre de AMI apropiado.
La plantilla de ejemplo contiene un recurso AWS::EC2::Instance
cuya propiedad ImageId
establece la función FindInMap
.
MapName
se establece en la asignación de interés, "RegionMap"
en este ejemplo. TopLevelKey
se establece en la región donde se crea la pila, lo cual se determina mediante el pseudoparámetro "AWS::Region"
. SecondLevelKey
se establece en la arquitectura deseada, "HVM64"
para este ejemplo.
FindInMap
devuelve la AMI asignada a FindInMap
. Para una instancia HVM64 en la región us-east-1, FindInMap
devolverá "ami-0ff8a91507f77f867"
.
JSON
{ ... "Mappings" : { "RegionMap" : { "us-east-1" : { "HVM64" : "ami-0ff8a91507f77f867", "HVMG2" : "ami-0a584ac55a7631c0c" }, "us-west-1" : { "HVM64" : "ami-0bdb828fd58c52235", "HVMG2" : "ami-066ee5fd4a9ef77f1" }, "eu-west-1" : { "HVM64" : "ami-047bb4163c506cd98", "HVMG2" : "ami-0a7c483d527806435" }, "ap-southeast-1" : { "HVM64" : "ami-08569b978cc4dfa10", "HVMG2" : "ami-0be9df32ae9f92309" }, "ap-northeast-1" : { "HVM64" : "ami-06cd52961ce9f0d85", "HVMG2" : "ami-053cdd503598e4a9d" } } }, "Resources" : { "myEC2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "ImageId" : { "Fn::FindInMap" : [ "RegionMap", { "Ref" : "AWS::Region" }, "HVM64" ] }, "InstanceType" : "m1.small" } } } }
YAML
Mappings: RegionMap: us-east-1: HVM64: "ami-0ff8a91507f77f867" HVMG2: "ami-0a584ac55a7631c0c" us-west-1: HVM64: "ami-0bdb828fd58c52235" HVMG2: "ami-066ee5fd4a9ef77f1" eu-west-1: HVM64: "ami-047bb4163c506cd98" HVMG2: "ami-31c2f645" ap-southeast-1: HVM64: "ami-08569b978cc4dfa10" HVMG2: "ami-0be9df32ae9f92309" ap-northeast-1: HVM64: "ami-06cd52961ce9f0d85" HVMG2: "ami-053cdd503598e4a9d" Resources: myEC2Instance: Type: "AWS::EC2::Instance" Properties: ImageId: !FindInMap - RegionMap - !Ref 'AWS::Region' - HVM64 InstanceType: m1.small
Funciones compatibles
Puede utilizar las siguientes funciones en una función Fn::FindInMap
:
-
Fn::FindInMap
-
Ref