Mappings référence de syntaxe de section pour les CloudFormation modèles - AWS CloudFormation

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.

Mappings référence de syntaxe de section pour les CloudFormation modèles

La Mappings section 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.

L'un des cas d'utilisation courants de Mappings cette section consiste à définir des valeurs en fonction de l' Région AWS endroit où la pile est déployée. Cela peut être réalisé en utilisant le AWS::Region pseudo-paramètre. 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 Resources section de votre modèle.

Syntaxe

La Mappings section utilise la syntaxe suivante :

JSON

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

YAML

Mappings: MappingLogicalName: Key1: Name: Value1 Key2: Name: Value2 Key3: Name: Value3
  • MappingLogicalNameest le nom logique du mappage.

  • Dans le mappage, chaque carte 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 ouList.

Note

Vous ne pouvez pas inclure des paramètres, des pseudo-paramètres ou des fonctions intrinsèques dans la section Mappings.

Exemples

Mappage de base

L'exemple suivant présente une section Mappings avec un mappage RegionMap, 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 (InstanceTypedans l'exemple) et une valeur.

JSON

"Mappings" : { "RegionMap" : { "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: RegionMap: 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 mappées à deux ensembles de valeurs : l'un nommé MyAMI1 et l'autreMyAMI2.

JSON

"AMIIDMap" : { "us-east-1" : {"MyAMI1" : "ami-0ff8a91507f77f867", "MyAMI2" : "ami-0a584ac55a7631c0c"}, "us-west-1" : {"MyAMI1" : "ami-0bdb828fd58c52235", "MyAMI2" : "ami-066ee5fd4a9ef77f1"}, "eu-west-1" : {"MyAMI1" : "ami-047bb4163c506cd98", "MyAMI2" : "ami-0a7c483d527806435"}, "ap-southeast-1" : {"MyAMI1" : "ami-08569b978cc4dfa10", "MyAMI2" : "ami-0be9df32ae9f92309"}, "ap-northeast-1" : {"MyAMI1" : "ami-06cd52961ce9f0d85", "MyAMI2" : "ami-053cdd503598e4a9d"} }

YAML

AMIIDMap: us-east-1: MyAMI1: ami-0ff8a91507f77f867 MyAMI2: ami-0a584ac55a7631c0c us-west-1: MyAMI1: ami-0bdb828fd58c52235 MyAMI2: ami-066ee5fd4a9ef77f1 eu-west-1: MyAMI1: ami-047bb4163c506cd98 MyAMI2: ami-0a7c483d527806435 ap-southeast-1: MyAMI1: ami-08569b978cc4dfa10 MyAMI2: ami-0be9df32ae9f92309 ap-northeast-1: MyAMI1: ami-06cd52961ce9f0d85 MyAMI2: ami-053cdd503598e4a9d

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 EC2 ressource Amazon dont ImageId la propriété est attribuée par la FindInMap fonction. La FindInMap fonction spécifie la clé comme la région où la pile est créée (en utilisant le AWS::Region pseudo-paramètre) et MyAMI1 comme le nom de la valeur à mapper. Pour plus d'informations sur les pseudo-paramètres, consultez Référence des pseudo-paramètres.

JSON

{ "AWSTemplateFormatVersion" : "2010-09-09", "Mappings" : { "AMIIDMap" : { "us-east-1" : {"MyAMI1" : "ami-0ff8a91507f77f867", "MyAMI2" : "ami-0a584ac55a7631c0c"}, "us-west-1" : {"MyAMI1" : "ami-0bdb828fd58c52235", "MyAMI2" : "ami-066ee5fd4a9ef77f1"}, "eu-west-1" : {"MyAMI1" : "ami-047bb4163c506cd98", "MyAMI2" : "ami-0a7c483d527806435"}, "ap-northeast-1" : {"MyAMI1" : "ami-06cd52961ce9f0d85", "MyAMI2" : "ami-053cdd503598e4a9d"}, "ap-southeast-1" : {"MyAMI1" : "ami-08569b978cc4dfa10", "MyAMI2" : "ami-0be9df32ae9f92309"} } }, "Resources" : { "myEC2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "ImageId" : { "Fn::FindInMap" : [ "AMIIDMap", { "Ref" : "AWS::Region" }, "MyAMI1" ]}, "InstanceType" : "t2.micro" } } } }

YAML

AWSTemplateFormatVersion: 2010-09-09 Mappings: AMIIDMap: us-east-1: MyAMI1: ami-0ff8a91507f77f867 MyAMI2: ami-0a584ac55a7631c0c us-west-1: MyAMI1: ami-0bdb828fd58c52235 MyAMI2: ami-066ee5fd4a9ef77f1 eu-west-1: MyAMI1: ami-047bb4163c506cd98 MyAMI2: ami-0a7c483d527806435 ap-northeast-1: MyAMI1: ami-06cd52961ce9f0d85 MyAMI2: ami-053cdd503598e4a9d ap-southeast-1: MyAMI1: ami-08569b978cc4dfa10 MyAMI2: ami-0be9df32ae9f92309 Resources: myEC2Instance: Type: "AWS::EC2::Instance" Properties: ImageId: !FindInMap [AMIIDMap, !Ref "AWS::Region", MyAMI1] InstanceType: t2.micro

Paramètre d'entrée et Fn::FindInMap

Vous pouvez utiliser un paramètre d'entrée avec la fonction Fn::FindInMap pour faire référence à une valeur spécifique dans un mappage. Supposons, par exemple, que vous disposiez d'une liste de régions et de types d'environnement correspondant à un ID de groupe de sécurité spécifique. Vous pouvez sélectionner l'ID du groupe de sécurité utilisé par votre pile à l'aide d'un paramètre d'entrée (EnvironmentType). Pour déterminer la région, utilisez le AWS::Region pseudo-paramètre, qui permet d'obtenir le Région AWS nom dans lequel vous créez la pile.

Cet exemple déclare également un type de paramètre Systems Manager qui fournit un alias de paramètre Systems Manager (/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2) comme valeur par défaut pour la ImageId propriété de l'EC2instance. Il s'agit d'une valeur CloudFormation qui correspond à la valeur AMI d'identifiant de la dernière version d'Amazon Linux 2 AMI dans la région où la pile est créée.

JSON

{ "AWSTemplateFormatVersion" : "2010-09-09", "Parameters" : { "LatestAmiId" : { "Description" : "The latest Amazon Linux 2 AMI from the Parameter Store", "Type" : "AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>", "Default" : "/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2" }, "EnvironmentType" : { "Description" : "The environment type (Dev or Prod)", "Type" : "String", "Default" : "Dev", "AllowedValues" : [ "Dev", "Prod" ] } }, "Mappings" : { "SecurityGroupMap" : { "us-east-1" : { "Dev" : "sg-12345678", "Prod" : "sg-abcdef01" }, "us-west-2" : { "Dev" : "sg-ghijkl23", "Prod" : "sg-45678abc" } } }, "Resources" : { "Ec2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "ImageId" : { "Ref" : "LatestAmiId" }, "InstanceType" : "t2.micro", "SecurityGroupIds" : [{ "Fn::FindInMap" : [ "SecurityGroupMap", { "Ref" : "AWS::Region" }, { "Ref" : "EnvironmentType" } ]}] } } } }

YAML

AWSTemplateFormatVersion: 2010-09-09 Parameters: LatestAmiId: Description: The latest Amazon Linux 2 AMI from the Parameter Store Type: 'AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>' Default: '/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2' EnvironmentType: Description: The environment type (Dev or Prod) Type: String Default: Dev AllowedValues: - Dev - Prod Mappings: SecurityGroupMap: us-east-1: Dev: "sg-12345678" Prod: "sg-abcdef01" us-west-2: Dev: "sg-ghijkl23" Prod: "sg-45678abc" Resources: Ec2Instance: Type: 'AWS::EC2::Instance' Properties: ImageId: !Ref LatestAmiId InstanceType: t2.micro SecurityGroupIds: - !FindInMap [SecurityGroupMap, !Ref "AWS::Region", !Ref EnvironmentType]

Ces rubriques connexes peuvent s'avérer utiles lorsque vous développez des modèles utilisant cette Fn::FindInMap fonction.