Fn::FindInMap enhancements - AWS CloudFormation

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ándar Fn::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á si TopLevelKey o SecondLevelKey no se pueden encontrar en el mapa de MapName. 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::

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.