

Il s’agit du nouveau *Guide de référence des modèles CloudFormation *. Veuillez mettre à jour vos favoris et vos liens. Pour obtenir de l'aide pour démarrer CloudFormation, consultez le [guide de AWS CloudFormation l'utilisateur](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html).

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

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

La `AWS::LanguageExtensions` transformation améliore la fonctionnalité de la fonction `Fn::FindInMap` intrinsèque dans les CloudFormation modèles.

La `Fn::FindInMap` fonction est utilisée pour récupérer une valeur à partir d'un mappage défini dans la `Mappings` section d'un CloudFormation modèle. Cependant, la fonction `Fn::FindInMap` standard présente des limites, notamment l’impossibilité de gérer les mappages manquants ou d’utiliser une fonction `Fn::FindInMap` contenant certaines fonctions intrinsèques imbriquées.

La transformation `AWS::LanguageExtensions` répond à ces limites en introduisant les améliorations suivantes :
+ **Prise en charge des valeurs par défaut** : vous pouvez spécifier une valeur par défaut à renvoyer si aucun mappage n’est trouvé.
+ **Prise en charge élargie des fonctions intrinsèques** : vous pouvez également utiliser un plus large éventail de fonctions intrinsèques pour définir les champs de `Fn::FindInMap`, par rapport à la fonction `Fn::FindInMap` standard.

## Déclaration
<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>

Syntaxe pour le nom complet de la fonction :

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

Syntaxe pour la forme courte :

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

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

DefaultValue  <a name="DefaultValue"></a>
La valeur qui `Fn::FindInMap` sera résolue si le `TopLevelKey` and/or `SecondLevelKey` n'est pas trouvé sur la `MapName` carte. Ce champ est facultatif.

Tous les paramètres `MapName`, `TopLevelKey`, `SecondLevelKey` et `DefaultValue` peuvent être des fonctions intrinsèques tant qu'ils peuvent être résolus en une valeur valide lors de la transformation.

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

Les exemples suivants montrent comment définir les champs de `Fn::FindInMap` lorsque vous ajoutez la transformation `AWS::LanguageExtensions`.

### Utilisation d’une valeur par défaut
<a name="intrinsic-function-reference-findinmap-enhancements-example"></a>

L’exemple suivant illustre l’utilisation d’une valeur par défaut dans la fonction `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
#...
```

#### Utilisation de fonctions intrinsèques pour définir la clé de premier niveau
<a name="intrinsic-function-reference-findinmap-enhancements-example"></a>

L’exemple suivant illustre l’utilisation d’une fonction `Fn::FindInMap` avec les fonctions intrinsèques `Fn::Select` et `Fn::Split` vectorisées, afin de définir la clé de premier niveau.

##### 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]
#...
```

## Fonctions prises en charge
<a name="intrinsic-function-reference-findinmap-enhancements-supported-functions"></a>

Vous pouvez utiliser les fonctions suivantes dans les paramètres des améliorations `Fn::FindInMap:` :
+ ``Fn::FindInMap``
+ ``Fn::Join``
+ ``Fn::Sub``
+ ``Fn::If``
+ ``Fn::Select``
+ ``Fn::Length``
+ ``Fn::ToJsonString``
+ ``Fn::Split`` - À moins d'être utilisé comme valeur par défaut, `Fn::Split` doit être utilisé en association avec des fonctions intrinsèques qui produisent une chaîne, par exemple ``Fn::Join`` ou ``Fn::Select``.
+ ``Ref``

## Ressources connexes
<a name="w2aac28c16c20c19"></a>

Pour plus d’informations et d’exemples sur l’utilisation de la fonction intrinsèque `Fn::FindInMap`, consultez [`Fn::FindInMap`](intrinsic-function-reference-findinmap.md).

Pour plus d'informations sur la transformation `AWS::LanguageExtensions`, consultez [Transformation `AWS::LanguageExtensions`](transform-aws-languageextensions.md).