CloudFormation Vorlage Mappings Syntax - 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.

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

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