

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 `Fn::FindInMap` é usada para recuperar um valor de um mapeamento definido na seção `Mappings` de um modelo do CloudFormation. No entanto, a função `Fn::FindInMap` padrão tem limitações, como a incapacidade de lidar com mapeamentos ausentes ou usar uma função `Fn::FindInMap` com algumas funções intrínsecas incorporadas.

A transformação `AWS::LanguageExtensions` aborda essas limitações introduzindo os seguintes aprimoramentos:
+ **Suporte ao valor padrão**: você poderá especificar um valor padrão a ser retornado se um mapeamento não for encontrado.
+ **Suporte à função intrínseca**: também é possível usar uma variedade maior de funções intrínsecas para definir os campos de `Fn::FindInMap` do que com a função `Fn::FindInMap` padrão.

## 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",
    {"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
  - DefaultValue: DefaultValue
```

Sintaxe para a forma resumida:

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

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

DefaultValue  <a name="DefaultValue"></a>
O valor para o qual `Fn::FindInMap` será resolvido se a `TopLevelKey` e/ou a `SecondLevelKey` não puderem ser encontradas no mapa `MapName`. Esse campo é opcional.

Todos os parâmetros `MapName`, `TopLevelKey`, `SecondLevelKey` e `DefaultValue` podem ser uma função intrínseca, desde que possam ser resolvidos para um valor válido durante a transformação.

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

Os exemplos a seguir demonstram como definir os campos de `Fn::FindInMap` quando você adiciona a transformação `AWS::LanguageExtensions`.

### Usar um valor padrão
<a name="intrinsic-function-reference-findinmap-enhancements-example"></a>

Este é um exemplo do uso dos valores padrão na função `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 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 melhorias de `Fn::FindInMap:`:
+ ``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="w2aac28c16c20c19"></a>

Consulte mais informações e exemplos que mostram como usar a função intrínseca `Fn::FindInMap` em [`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).