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 MappingsVorlagensyntax
Der optionale Abschnitt Mappings hilft Ihnen bei der Erstellung von Schlüssel-Wert-Paaren, mit denen Sie Werte basierend auf bestimmten Bedingungen oder Abhängigkeiten angeben können.
Ein üblicher Anwendungsfall für den Abschnitt Mappings ist die Festlegung von Werten auf der Grundlage von AWS-Region , wo der Stack eingesetzt wird. Dies kann durch die Verwendung des Pseudoparameters AWS::Region erreicht werden. Der AWS::Region Pseudo-Parameter ist ein Wert, der in die Region CloudFormation aufgelöst wird, in der der Stack erstellt wurde. Pseudo-Parameter werden aufgelöst, CloudFormation wenn Sie den Stack erstellen.
Um Werte in einer Map abzurufen, können Sie die intrinsische Funktion Fn::FindInMap im Abschnitt Resources Ihrer Vorlage verwenden.
Syntax
Der Abschnitt Mappings verwendet die folgende Syntax:
JSON
"Mappings" : { "MappingLogicalName" : { "Key1" : { "Name" : "Value1" }, "Key2" : { "Name" : "Value2" }, "Key3" : { "Name" : "Value3" } } }
YAML
Mappings:MappingLogicalName:Key1:Name:Value1Key2:Name:Value2Key3:Name:Value3
-
MappingLogicalNameist der logische Name für die Zuordnung. -
Innerhalb der Zuordnung ist jede Karte ein Schlüssel, gefolgt von einer anderen Zuordnung.
-
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
StringoderListsein.
Anmerkung
Im Abschnitt Mappings dürfen keine Parameter, Pseudoparameter oder intrinsischen Funktionen verwendet werden.
Wenn die Werte in einem Mapping derzeit nicht von Ihrem Stack verwendet werden, können Sie das Mapping nicht allein aktualisieren. Sie müssen Änderungen einbeziehen, die Ressourcen hinzufügen, ändern oder löschen.
Beispiele
Themen
Grundlegende Zuweisungen
Das folgende Beispiel zeigt einen Mappings-Abschnitt mit einer Map RegionToInstanceType, 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 Instancetyp 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 in diesem Beispiel) und einen Wert.
JSON
"Mappings" : { "RegionToInstanceType" : { "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: RegionToInstanceType: 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 hat Regionsschlüssel, die zwei Gruppen von Werten zugeordnet sind: eine mit dem Namen MyAMI1 und die andere mit MyAMI2.
Anmerkung
Die in diesen Beispielen IDs gezeigten AMI sind Platzhalter zu Demonstrationszwecken. Wann immer möglich, sollten Sie dynamische Verweise auf AWS Systems Manager -Parameter als Alternative zum Mappings-Abschnitt verwenden. Um zu vermeiden, dass alle Ihre Vorlagen bei jeder Änderung des AMI, das Sie verwenden möchten, mit einer neuen ID aktualisiert werden, verwenden Sie einen AWS Systems Manager Parameter, um die neueste AMI-ID abzurufen, wenn der Stack erstellt oder aktualisiert wird. Die neuesten Versionen von häufig verwendeten AMIs sind auch als öffentliche Parameter in Systems Manager verfügbar. Weitere Informationen finden Sie unter Abrufen von in anderen Diensten gespeicherten Werten unter Verwendung dynamischer Referenzen.
JSON
"Mappings" : { "RegionToAMI" : { "us-east-1" : { "MyAMI1" : "ami-12345678901234567", "MyAMI2" : "ami-23456789012345678" }, "us-west-1" : { "MyAMI1" : "ami-34567890123456789", "MyAMI2" : "ami-45678901234567890" }, "eu-west-1" : { "MyAMI1" : "ami-56789012345678901", "MyAMI2" : "ami-67890123456789012" }, "ap-southeast-1" : { "MyAMI1" : "ami-78901234567890123", "MyAMI2" : "ami-89012345678901234" }, "ap-northeast-1" : { "MyAMI1" : "ami-90123456789012345", "MyAMI2" : "ami-01234567890123456" } } }
YAML
Mappings: RegionToAMI: us-east-1: MyAMI1:ami-12345678901234567MyAMI2:ami-23456789012345678us-west-1: MyAMI1:ami-34567890123456789MyAMI2:ami-45678901234567890eu-west-1: MyAMI1:ami-56789012345678901MyAMI2:ami-67890123456789012ap-southeast-1: MyAMI1:ami-78901234567890123MyAMI2:ami-89012345678901234ap-northeast-1: MyAMI1:ami-90123456789012345MyAMI2:ami-01234567890123456
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 InstanceType Eigenschaft von der FindInMap Funktion zugewiesen wird. Die FindInMap Funktion gibt Schlüssel als den AWS-Region Ort an, an dem der Stack erstellt wird (unter Verwendung des AWS::Region Pseudo-Parameters) und InstanceType als Namen des Werts, dem die Zuordnung erfolgen soll, an. Der ImageId verwendet einen Systems Manager-Parameter, um dynamisch das neueste Amazon Linux 2 AMI abzurufen. Weitere Informationen zu Pseudoparametern finden Sie unter AWS Werte mithilfe von Pseudo-Parametern abrufen.
JSON
{ "AWSTemplateFormatVersion" : "2010-09-09", "Mappings" : { "RegionToInstanceType" : { "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" } } }, "Resources" : { "myEC2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "ImageId" : "{{resolve:ssm:/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2}}", "InstanceType" : { "Fn::FindInMap" : [ "RegionToInstanceType", { "Ref" : "AWS::Region" }, "InstanceType" ]} } } } }
YAML
AWSTemplateFormatVersion: 2010-09-09 Mappings: RegionToInstanceType: 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 Resources: myEC2Instance: Type: AWS::EC2::Instance Properties: ImageId: '{{resolve:ssm:/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2}}' InstanceType: !FindInMap [RegionToInstanceType, !Ref 'AWS::Region', InstanceType]
Eingabeparameter und Fn::FindInMap
Die folgende Beispielvorlage zeigt, wie eine EC2 Instanz mithilfe mehrerer Zuordnungen erstellt wird. Die Vorlage verwendet verschachtelte Zuordnungen, um basierend auf dem Ziel- und Umgebungstyp (oder) automatisch den entsprechenden Instanztyp AWS-Region und die entsprechende Sicherheitsgruppe auszuwählen. Dev Prod Außerdem verwendet es einen Systems Manager-Parameter, um dynamisch das neueste Amazon Linux 2 AMI abzurufen.
JSON
{ "AWSTemplateFormatVersion" : "2010-09-09", "Parameters" : { "EnvironmentType" : { "Description" : "The environment type (Dev or Prod)", "Type" : "String", "Default" : "Dev", "AllowedValues" : [ "Dev", "Prod" ] } }, "Mappings" : { "RegionAndEnvironmentToInstanceType" : { "us-east-1" : { "Dev" : "t3.micro", "Prod" : "c5.large" }, "us-west-1" : { "Dev" : "t2.micro", "Prod" : "m5.large" } }, "RegionAndEnvironmentToSecurityGroup" : { "us-east-1" : { "Dev" : "sg-12345678", "Prod" : "sg-abcdef01" }, "us-west-1" : { "Dev" : "sg-ghijkl23", "Prod" : "sg-45678abc" } } }, "Resources" : { "Ec2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "ImageId" : "{{resolve:ssm:/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2}}", "InstanceType" : { "Fn::FindInMap": [ "RegionAndEnvironmentToInstanceType", { "Ref": "AWS::Region" }, { "Ref": "EnvironmentType" } ]}, "SecurityGroupIds" : [{ "Fn::FindInMap" : [ "RegionAndEnvironmentToSecurityGroup", { "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: RegionAndEnvironmentToInstanceType: us-east-1: Dev: t3.micro Prod: c5.large us-west-1: Dev: t2.micro Prod: m5.large RegionAndEnvironmentToSecurityGroup: us-east-1: Dev:sg-12345678Prod:sg-abcdef01us-west-1: Dev:sg-ghijkl23Prod:sg-45678abcResources: Ec2Instance: Type: AWS::EC2::Instance Properties: ImageId: '{{resolve:ssm:/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2}}' InstanceType: !FindInMap [RegionAndEnvironmentToInstanceType, !Ref 'AWS::Region', !Ref EnvironmentType] SecurityGroupIds: - !FindInMap [RegionAndEnvironmentToSecurityGroup, !Ref 'AWS::Region', !Ref EnvironmentType]
Zugehörige Ressourcen
Diese verwandten Themen können hilfreich sein, wenn Sie Vorlagen entwickeln, die die Funktion Fn::FindInMap verwenden.