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
-
MappingLogicalName
est 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 (InstanceType
dans 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]
Ressources connexes
Ces rubriques connexes peuvent s'avérer utiles lorsque vous développez des modèles utilisant cette Fn::FindInMap
fonction.