Mappings - AWS CloudFormation

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 (InstanceTypeim 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]

Diese verwandten Themen können bei der Entwicklung von Vorlagen, die diese Fn::FindInMap Funktion verwenden, hilfreich sein.