

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

La fonction intrinsèque `Fn::FindInMap` renvoie la valeur correspondant aux clés dans un mappage à deux niveaux déclaré dans la section `Mappings`.

## Déclaration
<a name="w2aac24c25b5"></a>

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

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

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

Syntaxe pour le nom complet de la fonction :

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

Syntaxe pour la forme courte :

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

**Note**  
Vous ne pouvez pas imbriquer deux instances de deux fonctions sous une forme courte.

## Parameters
<a name="w2aac24c25b7"></a>

MapName  <a name="MapName"></a>
Nom logique d'un mappage déclaré dans la section Mappings, qui contient les clés et les valeurs.

TopLevelKey  <a name="TopLevelKey"></a>
Nom de la clé de niveau supérieur. Sa valeur est une liste des paires clé-valeur.

SecondLevelKey  <a name="SecondLevelKey"></a>
Nom de la clé de deuxième niveau, qui est l'une des clés de la liste assignée à `TopLevelKey`.

## Valeur renvoyée
<a name="w2aac24c25b9"></a>

La valeur qui est assignée à `SecondLevelKey`.

## Exemples
<a name="intrinsic-function-reference-findinmap-examples"></a>

Les exemples suivants montrent comment utiliser la fonction `Fn::FindInMap`.

**Topics**
+ [Utilisation de Fn::FindInMap avec des valeurs propres à une région](#intrinsic-function-reference-findinmap-region-example)
+ [Utilisation de Fn::FindInMap pour des configurations propres à l’environnement](#intrinsic-function-reference-findinmap-environment-example)

### Utilisation de Fn::FindInMap avec des valeurs propres à une région
<a name="intrinsic-function-reference-findinmap-region-example"></a>

L’exemple suivant montre comment utiliser `Fn::FindInMap` dans un modèle qui inclut deux mappages : `AWSInstanceType2Arch` et `AWSRegionArch2AMI`. Il inclut également un paramètre `InstanceType` qui vous permet de choisir entre `t3.micro` et `t4g.nano`. La valeur par défaut est `t3.micro`, mais elle peut être remplacée lors de la création de la pile. 

`Fn::FindInMap` détermine d’abord l’architecture (`HVM64` ou `ARM64`) en fonction du type d’instance sélectionné, puis recherche l’ID d’AMI correct pour cette architecture dans la Région AWS actuelle. 

**Note**  
Les AMI IDs présentées dans ces exemples sont des espaces réservés à des fins de démonstration. Dans la mesure du possible, envisagez d’utiliser des références dynamiques aux paramètres  AWS Systems Manager comme alternative à la section `Mappings`. Pour éviter de mettre à jour tous vos modèles avec un nouvel identifiant chaque fois que l'AMI que vous souhaitez utiliser change, utilisez un AWS Systems Manager paramètre pour récupérer le dernier ID d'AMI lors de la création ou de la mise à jour de la pile. Les dernières versions des paramètres couramment utilisés AMIs sont également disponibles en tant que paramètres publics dans Systems Manager. Pour plus d’informations, consultez [Obtenir des valeurs stockées dans d’autres services à l’aide de références dynamiques](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/dynamic-references.html). 

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

```
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Parameters": {
    "InstanceType": {
      "Description": "The EC2 instance type",
      "Type": "String",
      "AllowedValues": [
        "t3.micro",
        "t4g.nano"
      ],
      "Default": "t3.micro"
    }
  },
  "Mappings": {
    "AWSInstanceType2Arch": {
      "t3.micro": {
        "Arch": "HVM64"
      },
      "t4g.nano": {
        "Arch": "ARM64"
      }
    },
    "AWSRegionArch2AMI": {
      "us-east-1" : { 
        "HVM64" : "ami-12345678901234567", "ARM64" : "ami-23456789012345678" 
      },
      "us-west-1" : { 
        "HVM64" : "ami-34567890123456789", "ARM64" : "ami-45678901234567890"
      },
      "eu-west-1" : { 
        "HVM64" : "ami-56789012345678901", "ARM64" : "ami-67890123456789012" 
      },
      "ap-southeast-1" : { 
        "HVM64" : "ami-78901234567890123", "ARM64" : "ami-89012345678901234" 
      },
      "ap-northeast-1" : { 
        "HVM64" : "ami-90123456789012345", "ARM64" : "ami-01234567890123456" 
      }
    }
  },
  "Resources" : {
    "MyEC2Instance" : {
      "Type" : "AWS::EC2::Instance",
      "Properties" : {
        "InstanceType" : { "Ref": "InstanceType" },
        "ImageId" : {
          "Fn::FindInMap" : [ "AWSRegionArch2AMI", { "Ref": "AWS::Region" }, { "Fn::FindInMap": [ "AWSInstanceType2Arch", { "Ref": "InstanceType" }, "Arch" ]}]
        }
      }
    }
  }
}
```

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

```
AWSTemplateFormatVersion: 2010-09-09
Parameters:
  InstanceType:
    Description: The EC2 instance type
    Type: String
    AllowedValues:
      - t3.micro
      - t4g.nano
    Default: t3.micro
Mappings: 
  AWSInstanceType2Arch:
    t3.micro:
      Arch: HVM64
    t4g.nano:
      Arch: ARM64
  AWSRegionArch2AMI:
    us-east-1: 
      HVM64: ami-12345678901234567
      ARM64: ami-23456789012345678
    us-west-1: 
      HVM64: ami-34567890123456789
      ARM64: ami-45678901234567890
    eu-west-1: 
      HVM64: ami-56789012345678901
      ARM64: ami-67890123456789012
    ap-southeast-1: 
      HVM64: ami-78901234567890123
      ARM64: ami-89012345678901234
    ap-northeast-1: 
      HVM64: ami-90123456789012345
      ARM64: ami-01234567890123456
Resources: 
  myEC2Instance: 
    Type: AWS::EC2::Instance
    Properties:
      InstanceType: !Ref InstanceType
      ImageId:
        Fn::FindInMap:
        - AWSRegionArch2AMI
        - Ref: AWS::Region
        - Fn::FindInMap:
          - AWSInstanceType2Arch
          - Ref: InstanceType
          - Arch
```

### Utilisation de Fn::FindInMap pour des configurations propres à l’environnement
<a name="intrinsic-function-reference-findinmap-environment-example"></a>

L’exemple suivant montre comment utiliser `Fn::FindInMap` dans un modèle contenant une section `Mappings` constituée d’un seul mappage, `SecurityGroups`. Le modèle comporte également un paramètre `EnvironmentType` qui permet de spécifier si l’environnement est `Dev` ou `Prod`. La valeur par défaut est `Dev`, mais elle peut être remplacée lors de la création de la pile.

`Fn::FindInMap`renvoie la valeur appropriée `SecurityGroupIds` en fonction du `EnvironmentType` paramètre. `Fn::Split`divise ensuite la chaîne du groupe de sécurité séparée par des virgules IDs en une liste, selon le format attendu pour. [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-instance.html#cfn-ec2-instance-securitygroupids](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-instance.html#cfn-ec2-instance-securitygroupids)

Si vous déployez cette pile avec `EnvironmentType` défini sur `Dev`, la valeur `SecurityGroupIds` utilisée par `EC2Instance` sera `sg-12345678`. Si vous définissez `EnvironmentType` sur `Prod`, elle utilisera `sg-abcdef01` et `sg-ghijkl23`.

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

```
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Parameters":{
    "EnvironmentType":{
      "Description":"The environment type (Dev or Prod)",
      "Type":"String",
      "Default":"Dev",
      "AllowedValues":[
        "Dev",
        "Prod"
      ]
    }
  },
  "Mappings":{
    "SecurityGroups":{
      "Dev":{
        "SecurityGroupIds":"sg-12345678"
      },
      "Prod":{
        "SecurityGroupIds":"sg-abcdef01,sg-ghijkl23"
      }
    }
  },
  "Resources":{
    "Ec2Instance":{
      "Type":"AWS::EC2::Instance",
      "Properties":{
        "ImageId": "{{resolve:ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64}}",
        "InstanceType": "t2.micro",
        "SecurityGroupIds":{
          "Fn::Split":[
            ",",
            {
              "Fn::FindInMap":[
                "SecurityGroups",
                {
                  "Ref":"EnvironmentType"
                },
                "SecurityGroupIds"
              ]
            }
          ]
        }
      }
    }
  }
}
```

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

```
AWSTemplateFormatVersion: 2010-09-09
Parameters:
  EnvironmentType:
    Description: The environment type (Dev or Prod)
    Type: String
    Default: Dev
    AllowedValues:
      - Dev
      - Prod
Mappings:
  SecurityGroups:
    Dev:
      SecurityGroupIds: sg-12345678
    Prod:
      SecurityGroupIds: sg-abcdef01,sg-ghijkl23
Resources:
  Ec2Instance:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: '{{resolve:ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64}}'
      InstanceType: t2.micro
      SecurityGroupIds:
        Fn::Split:
          - ","
          - Fn::FindInMap: [ SecurityGroups, !Ref EnvironmentType, SecurityGroupIds ]
```

## Fonctions prises en charge
<a name="w2aac24c25c13"></a>

Vous pouvez utiliser les fonctions suivantes dans une fonction `Fn::FindInMap` :
+ `Fn::FindInMap`
+ `Ref`

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

Pour utiliser d’autres fonctions intrinsèques ou une valeur par défaut dans une fonction `Fn::FindInMap`, vous devez déclarer la transformation `AWS::LanguageExtensions` dans votre modèle. Pour de plus amples informations, veuillez consulter [`Fn::FindInMap enhancements`](intrinsic-function-reference-findinmap-enhancements.md).

Ces rubriques connexes peuvent vous être utiles pour développer des modèles utilisant la fonction `Fn::FindInMap`.
+ [`Fn::Sub`](intrinsic-function-reference-sub.md)
+ [CloudFormationMappingssyntaxe du modèle](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/mappings-section-structure.html) dans le *guide de AWS CloudFormation l'utilisateur*