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.
Mappings
Im optionalen Abschnitt Mappings
werden Schlüssel einem Satz benannter Werte zugewiesen. Sollen Werte beispielsweise auf Basis der Region zugewiesen werden, können Sie eine Zuweisung erstellen, die den Regionsnamen als Schlüssel definiert und die Werte enthält, die Sie jeweils für die einzelnen Regionen angeben möchten. Zum Abrufen von Werten aus einer Karte nutzen Sie die intrinsische Funktion Fn::FindInMap
.
Im Abschnitt Mappings
dürfen keine Parameter, Pseudoparameter oder intrinsischen Funktionen verwendet werden.
Syntax
Der Abschnitt Mappings
besteht aus dem Schlüsselnamen Mappings
. Die Schlüssel in Zuweisungen müssen Literalzeichenfolgen sein. Die möglichen Werte sind String
- oder List
-Typen. Das folgende Beispiel zeigt einen Mappings
-Abschnitt mit einer einzigen Zuweisung namens Mapping01
(der logische Name).
Innerhalb einer Zuweisung ist jede Map ein Schlüssel gefolgt von einer weiteren Zuweisung. Der Schlüssel muss eine Zuordnung von Name-Wert-Paaren darstellen und innerhalb der Zuordnung eindeutig sein.
JSON
"Mappings" : { "Mapping01" : { "Key01" : { "Name" : "Value01" }, "Key02" : { "Name" : "Value02" }, "Key03" : { "Name" : "Value03" } } }
YAML
Mappings: Mapping01: Key01: Name: Value01 Key02: Name: Value02 Key03: Name: Value03
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. Durch die Benennung der Werte können Sie einem Schlüssel mehr als einen Satz Werte zuweisen.
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 mit dem Namen My AMI1 und dem anderen mit dem Namen My. AMI2
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, in dem Sie den Stack erstellen.
JSON
{ "AWSTemplateFormatVersion" : "2010-09-09", "Parameters":{ "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": "ami-0a70b9d193ae8a799", "InstanceType": "t2.micro", "SecurityGroupIds": [{ "Fn::FindInMap" : [ "SecurityGroupMap", { "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: 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: ami-0a70b9d193ae8a799 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.