Fn::FindInMap
enhancements
La transformación de AWS::LanguageExtensions
mejora la funcionalidad de la función intrínseca Fn::FindInMap
de las plantillas de CloudFormation.
La función Fn::FindInMap
se utiliza para recuperar un valor de una asignación definida en la sección Mappings
de una plantilla de CloudFormation. Sin embargo, la función Fn::FindInMap
estándar tiene limitaciones, como la incapacidad de gestionar las asignaciones que faltan o de utilizar una función Fn::FindInMap
que contenga algunas funciones intrínsecas.
La transformación de AWS::LanguageExtensions
aborda estas limitaciones mediante la introducción de las siguientes mejoras:
-
Compatibilidad con valores predeterminados: puede especificar un valor predeterminado que se devolverá si no se encuentra una asignación.
-
Compatibilidad con funciones intrínsecas: también puede utilizar una gama más amplia de funciones intrínsecas para definir los campos de
Fn::FindInMap
con la función estándarFn::FindInMap
.
Declaración
JSON
{ "Fn::FindInMap" : [ "
MapName
", "TopLevelKey
", "SecondLevelKey
", {"DefaultValue": "DefaultValue
"} ] }
YAML
Sintaxis del nombre de función completo:
Fn::FindInMap:
- MapName
- TopLevelKey
- SecondLevelKey
- DefaultValue:DefaultValue
Sintaxis de la forma abreviada:
!FindInMap
- MapName
- TopLevelKey
- SecondLevelKey
- DefaultValue:DefaultValue
Parámetros
- DefaultValue
-
El valor que
Fn::FindInMap
resolverá siTopLevelKey
oSecondLevelKey
no se pueden encontrar en el mapa deMapName
. Este campo es opcional.
Todos los parámetros MapName
, TopLevelKey
, SecondLevelKey
y DefaultValue
pueden ser una función intrínseca siempre que pueda resolverse en un valor válido durante la transformación.
Ejemplos
Los siguientes ejemplos muestran cómo definir los campos de Fn::FindInMap
cuando se agrega la transformación de AWS::LanguageExtensions
.
Uso de un valor predeterminado
A continuación se muestra un ejemplo del uso de un valor predeterminado en la función Fn::FindInMap
.
JSON
{ //... "Transform": "AWS::LanguageExtensions", //... "Fn::FindInMap": [ "RegionMap", { "Ref": "AWS::Region" }, "InstanceType", { "DefaultValue": "t3.micro" } ] //... }
YAML
Transform: 'AWS::LanguageExtensions' #... !FindInMap - 'RegionMap' - !Ref 'AWS::Region' - 'InstanceType' - DefaultValue: t3.micro #...
Uso de funciones intrínsecas para definir la clave de nivel superior
El siguiente es un ejemplo del uso de una función Fn::FindInMap
con las funciones intrínsecas Fn::Select
y Fn::Split
incrustadas para definir la clave de nivel superior:
JSON
{ //... "Transform": "AWS::LanguageExtensions", //... "Fn::FindInMap": [ "MyMap", { "Fn::Select": [ 0, { "Fn::Split": [ "|", { "Ref": "InputKeys" } ] } ] }, "SecondKey" ] //... }
YAML
Transform: 'AWS::LanguageExtensions' #... !FindInMap: [MyMap, !Select [0, !Split [|, !Ref InputKeys]], SecondKey] #...
Funciones compatibles
Puede utilizar las siguientes funciones en los parámetros de las mejoras de Fn::FindInMap:
:
-
Fn::Split
: a menos que se use como valor predeterminado,Fn::Split
debe usarse junto con funciones intrínsecas que producen una cadena, comoFn::Join
oFn::Select
.
Recursos relacionados
Para obtener más información y ejemplos que muestran cómo usar la función intrínseca Fn::FindInMap
, consulte Fn::FindInMap.
Para obtener más información sobre la transformación de AWS::LanguageExtensions
, consulte Transformación AWS::LanguageExtensions.