

Esta es la nueva *Guía de referencia de plantillas de CloudFormation*. Actualice sus marcadores y enlaces. Para obtener ayuda sobre cómo empezar a usar CloudFormation, consulte la [Guía del usuario de AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html).

# `Fn::FindInMap enhancements`
<a name="intrinsic-function-reference-findinmap-enhancements"></a>

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
<a name="intrinsic-function-reference-findinmap-enhancements-declaration"></a>

### JSON
<a name="intrinsic-function-reference-findinmap-enhancements-syntax.json"></a>

```
{ "Fn::FindInMap" : [
    "MapName",
    "TopLevelKey",
    "SecondLevelKey",
    {"DefaultValue": "DefaultValue"}
  ]
}
```

### YAML
<a name="intrinsic-function-reference-findinmap-enhancements-syntax.yaml"></a>

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
```

## Parameters
<a name="intrinsic-function-reference-findinmap-enhancements-parameters"></a>

DefaultValue  <a name="DefaultValue"></a>
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
<a name="w2aac28c16c20c15"></a>

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 name="intrinsic-function-reference-findinmap-enhancements-example"></a>

A continuación se muestra un ejemplo del uso de un valor predeterminado en la función `Fn::FindInMap`.

#### JSON
<a name="intrinsic-function-reference-findinmap-default-value-example.json"></a>

```
{
  //...
    "Transform": "AWS::LanguageExtensions",
    //...
    "Fn::FindInMap": [
      "RegionMap",
      { "Ref": "AWS::Region" },
      "InstanceType",
      { "DefaultValue": "t3.micro" }
    ]
  //...
}
```

#### YAML
<a name="intrinsic-function-reference-findinmap-default-value-example.yaml"></a>

```
Transform: 'AWS::LanguageExtensions'
#...
    !FindInMap 
        - 'RegionMap'
        - !Ref 'AWS::Region'
        - 'InstanceType'
        - DefaultValue: t3.micro
#...
```

#### Uso de funciones intrínsecas para definir la clave de nivel superior
<a name="intrinsic-function-reference-findinmap-enhancements-example"></a>

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
<a name="intrinsic-function-reference-findinmap-enhancement-example.json"></a>

```
{
  //...
  "Transform": "AWS::LanguageExtensions",
  //...
      "Fn::FindInMap": [
        "MyMap",
        {
          "Fn::Select": [
            0,
            {
              "Fn::Split": [
                "|",
                { "Ref": "InputKeys" }
              ]
            }
          ]
        },
        "SecondKey"
      ]
//...
}
```

##### YAML
<a name="intrinsic-function-reference-findinmap-enhance-example.yaml"></a>

```
Transform: 'AWS::LanguageExtensions'
#...
    !FindInMap: [MyMap, !Select [0, !Split [|, !Ref InputKeys]], SecondKey]
#...
```

## Funciones compatibles
<a name="intrinsic-function-reference-findinmap-enhancements-supported-functions"></a>

Puede utilizar las siguientes funciones en los parámetros de las mejoras de `Fn::FindInMap:`:
+ ``Fn::FindInMap``
+ ``Fn::Join``
+ ``Fn::Sub``
+ ``Fn::If``
+ ``Fn::Select``
+ ``Fn::Length``
+ ``Fn::ToJsonString``
+ ``Fn::Split``: a menos que se use como valor predeterminado, `Fn::Split` debe usarse junto con funciones intrínsecas que producen una cadena, como ``Fn::Join`` o ``Fn::Select``.
+ ``Ref``

## Recursos relacionados
<a name="w2aac28c16c20c19"></a>

Para obtener más información y ejemplos que muestran cómo usar la función intrínseca `Fn::FindInMap`, consulte [`Fn::FindInMap`](intrinsic-function-reference-findinmap.md).

Para obtener más información sobre la transformación de `AWS::LanguageExtensions`, consulte [`AWS::LanguageExtensions`Transformación de](transform-aws-languageextensions.md).