

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.

# CloudFormation Mappingssyntaxe du modèle
<a name="mappings-section-structure"></a>

La section `Mappings` facultative vous aide à créer des paires clé-valeur qui peuvent être utilisées pour spécifier des valeurs en fonction de certaines conditions ou dépendances. 

Un cas d’utilisation courant de cette section `Mappings` consiste à définir des valeurs en fonction de l’emplacement Région AWS où la pile est déployée. Cela peut être réalisé à l’aide du pseudo-paramètre `AWS::Region`. Le `AWS::Region` pseudo-paramètre est une valeur qui CloudFormation correspond à la région où la pile est créée. Les pseudo-paramètres sont résolus CloudFormation lorsque vous créez la pile. 

Pour récupérer des valeurs dans une carte, vous pouvez utiliser la fonction `Fn::FindInMap` intrinsèque dans la section `Resources` de votre modèle. 

## Syntaxe
<a name="mappings-section-structure-syntax"></a>

La section `Mappings` utilise la syntaxe suivante :

### JSON
<a name="mappings-section-structure-syntax.json"></a>

```
"Mappings" : {
  "MappingLogicalName" : {
    "Key1" : {
      "Name" : "Value1"
    },
    "Key2" : {
      "Name" : "Value2"
    },
    "Key3" : {
      "Name" : "Value3"
    }
  }
}
```

### YAML
<a name="mappings-section-structure-syntax.yaml"></a>

```
Mappings: 
  MappingLogicalName: 
    Key1: 
      Name: Value1
    Key2: 
      Name: Value2
    Key3: 
      Name: Value3
```
+ `MappingLogicalName` est le nom logique du mappage.
+ Au sein du mappage, chaque association est une clé suivie d’un autre mappage.
+ La clé doit être un mappage de paires nom-valeur et doit être unique dans le mappage.
+ La paire nom-valeur est une étiquette, et l'ID la valeur à mapper. En donnant un nom aux valeurs, vous pouvez mapper plusieurs ensembles de valeurs à une clé.
+ Les clés des mappages doivent être des chaînes littérales.
+ Les valeurs peuvent être de type `String` ou `List`.

**Note**  
Vous ne pouvez pas inclure des paramètres, des pseudo-paramètres ou des fonctions intrinsèques dans la section `Mappings`.   
Si les valeurs d’un mappage ne sont pas actuellement utilisées par votre pile, vous ne pouvez pas mettre à jour le mappage seul. Vous devez inclure les modifications qui ajoutent, modifient ou suppriment des ressources.

## Exemples
<a name="mappings-section-structure-examples"></a>

**Topics**
+ [Mappage de base](#mappings-section-structure-basic-example)
+ [Mappage à plusieurs valeurs](#mappings-section-structure-multiple-values-example)
+ [Renvoi d'une valeur de mappage](#mappings-section-structure-return-value-example)
+ [Paramètre d'entrée et `Fn::FindInMap`](#mappings-section-structure-input-parameter-example)

### Mappage de base
<a name="mappings-section-structure-basic-example"></a>

L'exemple suivant présente une section `Mappings` avec un mappage `RegionToInstanceType`, qui contient cinq clés qui correspondent à des paires nom-valeur contenant des valeurs de chaîne unique. Les clés sont les noms de région. Chaque paire nom-valeur est un type d’instance de la famille T disponible dans la région représentée par la clé. Les paires nom-valeur ont un nom (`InstanceType` dans l’exemple) et une valeur. 

#### JSON
<a name="mappings-section-structure-basic-example.json"></a>

```
"Mappings" : {
  "RegionToInstanceType" : {
    "us-east-1"      : { "InstanceType" : "t2.micro" },
    "us-west-1"      : { "InstanceType" : "t2.micro" },
    "eu-west-1"      : { "InstanceType" : "t2.micro" },
    "eu-north-1"     : { "InstanceType" : "t3.micro" },
    "me-south-1"     : { "InstanceType" : "t3.micro" }
  }
}
```

#### YAML
<a name="mappings-section-structure-basic-example.yaml"></a>

```
Mappings:
  RegionToInstanceType:
    us-east-1:
      InstanceType: t2.micro
    us-west-1:
      InstanceType: t2.micro
    eu-west-1:
      InstanceType: t2.micro
    eu-north-1:
      InstanceType: t3.micro
    me-south-1:
      InstanceType: t3.micro
```

### Mappage à plusieurs valeurs
<a name="mappings-section-structure-multiple-values-example"></a>

L’exemple suivant comporte des clés de région qui sont mappées à deux ensembles de valeurs : l’un nommé `MyAMI1` et l’autre `MyAMI2`.

**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="mappings-section-structure-multiple-values-example"></a>

```
"Mappings" : {
  "RegionToAMI" : {
    "us-east-1"        : { "MyAMI1" : "ami-12345678901234567", "MyAMI2" : "ami-23456789012345678" },
    "us-west-1"        : { "MyAMI1" : "ami-34567890123456789", "MyAMI2" : "ami-45678901234567890" },
    "eu-west-1"        : { "MyAMI1" : "ami-56789012345678901", "MyAMI2" : "ami-67890123456789012" },
    "ap-southeast-1"   : { "MyAMI1" : "ami-78901234567890123", "MyAMI2" : "ami-89012345678901234" },
    "ap-northeast-1"   : { "MyAMI1" : "ami-90123456789012345", "MyAMI2" : "ami-01234567890123456" }
  }
}
```

#### YAML
<a name="mappings-section-structure-multiple-values-example.yaml"></a>

```
Mappings:
  RegionToAMI:
    us-east-1:
      MyAMI1: ami-12345678901234567
      MyAMI2: ami-23456789012345678
    us-west-1:
      MyAMI1: ami-34567890123456789
      MyAMI2: ami-45678901234567890
    eu-west-1:
      MyAMI1: ami-56789012345678901
      MyAMI2: ami-67890123456789012
    ap-southeast-1:
      MyAMI1: ami-78901234567890123
      MyAMI2: ami-89012345678901234
    ap-northeast-1:
      MyAMI1: ami-90123456789012345
      MyAMI2: ami-01234567890123456
```

### Renvoi d'une valeur de mappage
<a name="mappings-section-structure-return-value-example"></a>

Vous pouvez utiliser la fonction `Fn::FindInMap` pour renvoyer une valeur portant un nom en fonction d'une clé spécifiée. L'exemple de modèle suivant contient une ressource Amazon EC2 dont la propriété `InstanceType` est attribuée par la fonction `FindInMap`. La `FindInMap` fonction spécifie la clé comme l' Région AWS endroit où la pile est créée (en utilisant le `AWS::Region` pseudo-paramètre) et `InstanceType` comme le nom de la valeur à mapper. Le `ImageId` utilise un paramètre Systems Manager pour récupérer dynamiquement la dernière AMI Amazon Linux 2. Pour plus d'informations sur les pseudo-paramètres, consultez [Obtenir des AWS valeurs à l'aide de pseudo-paramètres](pseudo-parameter-reference.md).

#### JSON
<a name="mappings-section-structure-return-value-example.json"></a>

```
{
  "AWSTemplateFormatVersion" : "2010-09-09",
  "Mappings" : {
    "RegionToInstanceType" : {
      "us-east-1"      : { "InstanceType" : "t2.micro" },
      "us-west-1"      : { "InstanceType" : "t2.micro" },
      "eu-west-1"      : { "InstanceType" : "t2.micro" },
      "eu-north-1"     : { "InstanceType" : "t3.micro" },
      "me-south-1"     : { "InstanceType" : "t3.micro" }
    }
  },
  "Resources" : {
    "myEC2Instance" : {
      "Type" : "AWS::EC2::Instance",
      "Properties" : {
        "ImageId" : "{{resolve:ssm:/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2}}",
        "InstanceType" : { "Fn::FindInMap" : [ "RegionToInstanceType", { "Ref" : "AWS::Region" }, "InstanceType" ]}
      }
    }
  }
}
```

#### YAML
<a name="mappings-section-structure-return-value-example.yaml"></a>

```
AWSTemplateFormatVersion: 2010-09-09
Mappings: 
  RegionToInstanceType: 
    us-east-1:
      InstanceType: t2.micro
    us-west-1:
      InstanceType: t2.micro
    eu-west-1:
      InstanceType: t2.micro
    eu-north-1:
      InstanceType: t3.micro
    me-south-1:
      InstanceType: t3.micro
Resources: 
  myEC2Instance: 
    Type: AWS::EC2::Instance
    Properties: 
      ImageId: '{{resolve:ssm:/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2}}'
      InstanceType: !FindInMap [RegionToInstanceType, !Ref 'AWS::Region', InstanceType]
```

### Paramètre d'entrée et `Fn::FindInMap`
<a name="mappings-section-structure-input-parameter-example"></a>

Le modèle d’exemple suivant montre comment créer une instance EC2 à l’aide de plusieurs mappages. Le modèle utilise des mappages imbriqués pour sélectionner automatiquement le type d'instance et le groupe de sécurité appropriés en fonction de la cible Région AWS et du type d'environnement (`Dev`ou`Prod`). Il utilise un paramètre Systems Manager pour récupérer dynamiquement la dernière AMI Amazon Linux 2.

#### JSON
<a name="mappings-section-structure-input-parameter-example.json"></a>

```
{
  "AWSTemplateFormatVersion" : "2010-09-09",
  "Parameters" : {
    "EnvironmentType" : {
      "Description" : "The environment type (Dev or Prod)",
      "Type" : "String",
      "Default" : "Dev",
      "AllowedValues" : [ "Dev", "Prod" ]
    }
  },
  "Mappings" : {
    "RegionAndEnvironmentToInstanceType" : {
      "us-east-1"        : { "Dev" : "t3.micro", "Prod" : "c5.large" },
      "us-west-1"        : { "Dev" : "t2.micro", "Prod" : "m5.large" }
    },
    "RegionAndEnvironmentToSecurityGroup" : {
      "us-east-1"        : { "Dev" : "sg-12345678", "Prod" : "sg-abcdef01" },
      "us-west-1"        : { "Dev" : "sg-ghijkl23", "Prod" : "sg-45678abc" }
    }
  },
  "Resources" : {
    "Ec2Instance" : {
      "Type" : "AWS::EC2::Instance",
      "Properties" : {
        "ImageId" : "{{resolve:ssm:/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2}}",
        "InstanceType" : { "Fn::FindInMap": [ "RegionAndEnvironmentToInstanceType", { "Ref": "AWS::Region" }, { "Ref": "EnvironmentType" } ]},
        "SecurityGroupIds" : [{ "Fn::FindInMap" : [ "RegionAndEnvironmentToSecurityGroup", { "Ref" : "AWS::Region" }, { "Ref" : "EnvironmentType" } ]}]
      }
    }
  }
}
```

#### YAML
<a name="mappings-section-structure-input-parameter-example.yaml"></a>

```
AWSTemplateFormatVersion: 2010-09-09
Parameters:
  EnvironmentType: 
    Description: The environment type (Dev or Prod)
    Type: String
    Default: Dev
    AllowedValues: 
      - Dev
      - Prod
Mappings:
  RegionAndEnvironmentToInstanceType:
    us-east-1: 
      Dev: t3.micro
      Prod: c5.large
    us-west-1: 
      Dev: t2.micro
      Prod: m5.large
  RegionAndEnvironmentToSecurityGroup: 
    us-east-1: 
      Dev: sg-12345678
      Prod: sg-abcdef01
    us-west-1: 
      Dev: sg-ghijkl23
      Prod: sg-45678abc
Resources:
  Ec2Instance:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: '{{resolve:ssm:/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2}}'
      InstanceType: !FindInMap [RegionAndEnvironmentToInstanceType, !Ref 'AWS::Region', !Ref EnvironmentType]
      SecurityGroupIds:
        - !FindInMap [RegionAndEnvironmentToSecurityGroup, !Ref 'AWS::Region', !Ref EnvironmentType]
```

## Ressources connexes
<a name="mappings-section-related-resources"></a>

Ces rubriques connexes peuvent vous être utiles pour développer des modèles utilisant la fonction `Fn::FindInMap`.
+ [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-findinmap.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-findinmap.html)
+ [Améliorations de Fn::FindInMap](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-findinmap-enhancements.html)
+ [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-sub.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-sub.html)