

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 estándar `Fn::FindInMap` solo admite `Fn::FindInMap` y `Ref` como funciones intrínsecas anidadas. La transformación `AWS::LanguageExtensions` elimina esta limitación, lo que permite utilizar una gama más amplia de funciones intrínsecas para definir los parámetros de `Fn::FindInMap`.

**nota**  
El parámetro `DefaultValue` para `Fn::FindInMap` ya no requiere la transformación `AWS::LanguageExtensions`. Se puede utilizar `DefaultValue` en cualquier plantilla de CloudFormation. Para obtener más información, consulte [`Fn::FindInMap`](intrinsic-function-reference-findinmap.md).

## 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}}"] }
```

Si desea especificar un valor alternativo para cuando no se encuentre una clave en el mapeo, incluya un `DefaultValue`:

```
{ "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}} ]
```

Sintaxis de la forma abreviada:

```
!FindInMap [ {{MapName}}, {{TopLevelKey}}, {{SecondLevelKey}} ]
```

Si desea especificar un valor alternativo para cuando no se encuentre una clave en el mapeo, incluya un `DefaultValue`:

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>

Con la transformación `AWS::LanguageExtensions`, los parámetros `MapName`, `TopLevelKey`, `SecondLevelKey`, y `DefaultValue` pueden ser cada uno una función intrínseca, siempre que se resuelvan en un valor válido durante la transformación.

## Ejemplos
<a name="w2aac28c16c20c13"></a>

Los siguientes ejemplos muestran cómo utilizar funciones intrínsecas en los parámetros de `Fn::FindInMap` cuando se añade la transformación `AWS::LanguageExtensions`.

### 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 `Fn::FindInMap` con la transformación `AWS::LanguageExtensions`:
+ ``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="w2aac28c16c20c17"></a>

Para obtener más información y ejemplos que muestran cómo usar la función intrínseca `Fn::FindInMap`, incluido el parámetro `DefaultValue`, 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).