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 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:Value1Key2:Name:Value2Key3: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
Stringoder seinList.
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 alleine 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 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" : { "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 enthält Regionsschlüssel, die zwei Wertesätzen zugeordnet sind: einem benannten MyAMI1 und einem anderen. MyAMI2
Anmerkung
Die in diesen Beispielen IDs gezeigten AMI sind Platzhalter zu Demonstrationszwecken. Erwägen Sie, wann immer möglich, dynamische Verweise auf AWS Systems Manager Parameter als Alternative zum Mappings Abschnitt zu 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 Common Used AMIs sind auch als öffentliche Parameter in Systems Manager verfügbar. Weitere Informationen finden Sie unter Abrufen von Werten, die in anderen Diensten gespeichert sind, mithilfe dynamischer Verweise.
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 Manager-Parameter, um das neueste Amazon Linux 2-AMI dynamisch 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 Instance 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 Es verwendet auch einen Systems Manager Manager-Parameter, um das neueste Amazon Linux 2-AMI dynamisch 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 bei der Entwicklung von Vorlagen, die diese Fn::FindInMap Funktion verwenden, hilfreich sein.