

Este é o novo *Guia de referência de modelos do CloudFormation*. Atualize seus favoritos e links. Para obter ajuda para começar a usar o CloudFormation, consulte o [Guia do usuário do AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html).

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

A transformação `AWS::LanguageExtensions` aprimora a funcionalidade da função intrínseca `Fn::FindInMap` nos modelos do CloudFormation.

A função padrão `Fn::FindInMap` oferece suporte somente para `Fn::FindInMap` e `Ref` como funções intrínsecas aninhadas. A transformação `AWS::LanguageExtensions` remove esta limitação, permitindo que você use uma variedade maior de funções intrínsecas para definir os parâmetros de `Fn::FindInMap`.

**nota**  
O parâmetro `DefaultValue` for `Fn::FindInMap` não requer mais a transformação `AWS::LanguageExtensions`. Você pode usar `DefaultValue` em qualquer modelo do CloudFormation. Para obter mais informações, consulte [`Fn::FindInMap`](intrinsic-function-reference-findinmap.md).

## Declaração
<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}}"] }
```

Se você quiser especificar um valor alternativo para quando uma chave não for encontrada no mapeamento, inclua um `DefaultValue`:

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

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

Sintaxe para o nome da função completo:

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

Sintaxe para a forma resumida:

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

Se você quiser especificar um valor alternativo para quando uma chave não for encontrada no mapeamento, inclua um `DefaultValue`:

Sintaxe para o nome da função completo:

```
Fn::FindInMap:
  - {{MapName}}
  - {{TopLevelKey}}
  - {{SecondLevelKey}}
  - DefaultValue: {{DefaultValue}}
```

Sintaxe para a forma resumida:

```
!FindInMap
  - {{MapName}}
  - {{TopLevelKey}}
  - {{SecondLevelKey}}
  - DefaultValue: {{DefaultValue}}
```

## Parâmetros
<a name="intrinsic-function-reference-findinmap-enhancements-parameters"></a>

Com a transformação `AWS::LanguageExtensions`, os parâmetros `MapName`, `TopLevelKey`, `SecondLevelKey` e `DefaultValue` podem, cada um, ser uma função intrínseca, desde que resultem em um valor válido durante a transformação.

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

Os exemplos a seguir demonstram como usar funções intrínsecas nos parâmetros de `Fn::FindInMap` quando você adiciona a transformação `AWS::LanguageExtensions`.

### Uso das funções intrínsecas para definir a chave de nível superior
<a name="intrinsic-function-reference-findinmap-enhancements-example"></a>

Este é um exemplo do uso de uma função `Fn::FindInMap` com as funções intrínsecas `Fn::Select` e `Fn::Split` incorporadas nela para definir a chave de nível 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]
#...
```

## Funções compatíveis
<a name="intrinsic-function-reference-findinmap-enhancements-supported-functions"></a>

Você pode usar as seguintes funções nos parâmetros de `Fn::FindInMap` com a transformação `AWS::LanguageExtensions`:
+ ``Fn::FindInMap``
+ ``Fn::Join``
+ ``Fn::Sub``
+ ``Fn::If``
+ ``Fn::Select``
+ ``Fn::Length``
+ ``Fn::ToJsonString``
+ ``Fn::Split``: a menos que seja usada para o valor padrão, `Fn::Split` deve ser usada em conjunto com funções intrínsecas que produzam uma string, como ``Fn::Join`` ou ``Fn::Select``.
+ ``Ref``

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

Para obter mais informações e exemplos que mostram como usar a função intrínseca `Fn::FindInMap`, incluindo o parâmetro `DefaultValue`, consulte [`Fn::FindInMap`](intrinsic-function-reference-findinmap.md).

Para mais informações sobre a transformação `AWS::LanguageExtensions`, consulte [`AWS::LanguageExtensions`Transformação](transform-aws-languageextensions.md).