Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
CloudFormation Vorlage Mappings Syntax
Der optionale Mappings
Abschnitt hilft Ihnen bei der Erstellung von Schlüssel-Wert-Paaren, mit denen Sie Werte angeben können, die auf bestimmten Bedingungen oder Abhängigkeiten basieren.
Ein häufiger Anwendungsfall für den Mappings
Abschnitt besteht darin, Werte basierend darauf festzulegen, AWS-Region wo der Stack bereitgestellt wird. Dies kann durch die Verwendung des AWS::Region
Pseudo-Parameters erreicht werden. Der AWS::Region
Pseudo-Parameter ist ein Wert, der in die Region CloudFormation aufgelöst wird, in der der Stapel erstellt wird. Pseudo-Parameter werden aufgelöst, CloudFormation wenn Sie den Stack erstellen.
Um Werte in einer Map abzurufen, können Sie die Fn::FindInMap
systeminterne Funktion im Resources
Abschnitt Ihrer Vorlage verwenden.
Syntax
Der Mappings
Abschnitt verwendet die folgende Syntax:
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
ist der logische Name für das Mapping. -
Innerhalb des Mappings ist jede Map ein Schlüssel, gefolgt von einem anderen Mapping.
-
Der Schlüssel muss eine Zuordnung von Name-Wert-Paaren darstellen und innerhalb der Zuordnung eindeutig sein.
-
Das Name-Wert-Paar ist ein Etikett und der Zuweisungswert. Durch die Benennung der Werte können Sie einem Schlüssel mehr als einen Satz Werte zuweisen.
-
Die Schlüssel in Zuweisungen müssen Literalzeichenfolgen sein.
-
Die Werte können vom Typ
String
oder seinList
.
Anmerkung
Im Abschnitt Mappings
dürfen keine Parameter, Pseudoparameter oder intrinsischen Funktionen verwendet werden.
Beispiele
Grundlegende Zuweisungen
Das folgende Beispiel zeigt einen Mappings
-Abschnitt mit einer Map RegionMap
, die fünf Schlüssel enthält. Diesen Schlüsseln sind Name-Wert-Paare mit jeweils einem einzigen Zeichenfolgewert zugewiesen. Die Schlüssel sind Namen von Regionen. Jedes Name-Wert-Paar ist ein Instance-Typ aus der T-Familie, der in der Region verfügbar ist, die durch den Schlüssel repräsentiert wird. Die Name-Wert-Paare haben einen Namen (InstanceType
im Beispiel) und einen Wert.
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
Zuweisung mit mehreren Werten
Das folgende Beispiel enthält Regionsschlüssel, die zwei Wertesätzen zugeordnet sind: einem benannten MyAMI1
und einem anderen. MyAMI2
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
Zurückgeben eines Werts aus einer Zuweisung
Sie können die Funktion Fn::FindInMap
verwenden, um einen benannten Wert auf Basis eines angegebenen Schlüssels zurückzugeben. Die folgende Beispielvorlage enthält eine EC2 Amazon-Ressource, deren ImageId
Eigenschaft von der FindInMap
Funktion zugewiesen wird. Die FindInMap
Funktion gibt Schlüssel als die Region an, in der der Stack erstellt wird (unter Verwendung des AWS::Region
Pseudo-Parameters), und MyAMI1
als Namen des Werts, dem die Zuordnung erfolgen soll. Weitere Informationen zu Pseudoparametern finden Sie unter Pseudoparameter-Referenz.
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
Eingabeparameter und Fn::FindInMap
Sie können einen Eingabeparameter mit der Funktion Fn::FindInMap
verwenden, um einen bestimmten Wert in einer Map zu referenzieren. Nehmen wir beispielsweise an, Sie haben eine Liste von Regionen und Umgebungstypen, die einer bestimmten Sicherheitsgruppen-ID zugeordnet sind. Sie können die Sicherheitsgruppen-ID, die Ihr Stack verwendet, mithilfe eines Eingabeparameters (EnvironmentType
) auswählen. Um die Region zu bestimmen, verwenden Sie den AWS::Region
Pseudo-Parameter, der den Wert abruft, AWS-Region in dem Sie den Stack erstellen.
In diesem Beispiel wird auch ein Systems Manager Manager-Parametertyp deklariert, der einen Systems Manager Manager-Parameteralias (/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2
) als Standardwert für die ImageId
Eigenschaft der EC2 Instanz bereitstellt. Dies ist ein Wert, der als AMI ID-Wert für das neueste Amazon Linux 2 AMI in der Region, in der der Stack erstellt wurde, CloudFormation aufgelöst wird.
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]
Zugehörige Ressourcen
Diese verwandten Themen können bei der Entwicklung von Vorlagen, die diese Fn::FindInMap
Funktion verwenden, hilfreich sein.