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.
Syntaxe Mappings du modèle CloudFormation
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 pseudo-paramètre AWS::Region est une valeur que CloudFormation résout en tant que région où la pile est créée. Les pseudo-paramètres sont résolus par 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
La section Mappings utilise la syntaxe suivante :
JSON
"Mappings" : { "MappingLogicalName" : { "Key1" : { "Name" : "Value1" }, "Key2" : { "Name" : "Value2" }, "Key3" : { "Name" : "Value3" } } }
YAML
Mappings:MappingLogicalName:Key1:Name:Value1Key2:Name:Value2Key3:Name:Value3
-
MappingLogicalNameest 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
StringouList.
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
Rubriques
Mappage de base
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
"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
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
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 ID d’AMI présentés 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 ID lors de chaque changement de l’AMI que vous souhaitez utiliser, utilisez un paramètre AWS Systems Manager pour extraire le dernier ID d’AMI lors de la création ou de la mise à jour de la pile. Les dernières versions des AMI couramment utilisées 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.
JSON
"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
Mappings: RegionToAMI: us-east-1: MyAMI1:ami-12345678901234567MyAMI2:ami-23456789012345678us-west-1: MyAMI1:ami-34567890123456789MyAMI2:ami-45678901234567890eu-west-1: MyAMI1:ami-56789012345678901MyAMI2:ami-67890123456789012ap-southeast-1: MyAMI1:ami-78901234567890123MyAMI2:ami-89012345678901234ap-northeast-1: MyAMI1:ami-90123456789012345MyAMI2:ami-01234567890123456
Renvoi d'une valeur de mappage
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 fonction FindInMap spécifie la clé comme l’emplacement Région AWS où la pile est créée (à l’aide du pseudo-paramètre AWS::Region) 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.
JSON
{ "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
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
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
{ "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
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-12345678Prod:sg-abcdef01us-west-1: Dev:sg-ghijkl23Prod:sg-45678abcResources: 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
Ces rubriques connexes peuvent vous être utiles pour développer des modèles utilisant la fonction Fn::FindInMap.