Dies ist der neue AWS CloudFormation Vorlagen-Referenzleitfaden. Bitte aktualisieren Sie Ihre Lesezeichen und Links. Hilfe zu den ersten CloudFormation Schritten finden Sie im AWS CloudFormation Benutzerhandbuch.
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.
Fn::FindInMap
Die intrinsische Fn::FindInMap-Funktion gibt die Werte von Schlüsseln in einer Zwei-Ebenen-Map zurück, die im Abschnitt Mappings deklariert ist.
Deklaration
JSON
{ "Fn::FindInMap" : [ "MapName", "TopLevelKey", "SecondLevelKey"] }
YAML
Syntax für den vollständigen Funktionsnamen:
Fn::FindInMap: [MapName,TopLevelKey,SecondLevelKey]
Syntax für die Kurzform:
!FindInMap [MapName,TopLevelKey,SecondLevelKey]
Anmerkung
Zwei Instances von zwei Funktionen dürfen nicht im Kurzformat geschachtelt werden.
Parameter
- MapName
-
Gibt den logischen Namen einer im Abschnitt "Mappings" deklarierten Zuweisung an, die die Schlüssel und Werte enthält.
- TopLevelKey
-
Gibt den Namen des Schlüssels der obersten Ebene an. Sein Wert ist eine Auflistung von Schlüssel-Wert-Paaren.
- SecondLevelKey
-
Gibt den Namen des Schlüssels der zweiten Ebene an. Dabei handelt es sich um einen der Schlüssel aus der dem Parameter
TopLevelKeyzugewiesenen Liste.
Rückgabewert
Zurückgegeben wird der Wert, der dem SecondLevelKey-Parameter zugewiesen ist.
Beispiele
Das folgende Beispiele zeigt, wie die Fn::FindInMap-Funktion verwendet wird.
Themen
Wird mit regionsspezifischen Werten verwendet Fn::FindInMap
Das folgende Beispiel zeigt die Verwendung Fn::FindInMap in einer Vorlage, die zwei Zuordnungen enthält: und. AWSInstanceType2Arch AWSRegionArch2AMI Es enthält auch einen InstanceType Parameter, mit dem Sie zwischen und t3.micro wählen können. t4g.nano Die Standardeinstellung istt3.micro, kann aber bei der Stapelerstellung außer Kraft gesetzt werden.
Fn::FindInMapbestimmt zuerst die Architektur (HVM64oderARM64) auf der Grundlage des ausgewählten Instance-Typs und sucht dann in der aktuellen Version nach der richtigen AMI-ID für diese Architektur AWS-Region.
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 in anderen Diensten gespeicherten Werten mithilfe dynamischer Verweise.
JSON
{ "AWSTemplateFormatVersion": "2010-09-09", "Parameters": { "InstanceType": { "Description": "The EC2 instance type", "Type": "String", "AllowedValues": [ "t3.micro", "t4g.nano" ], "Default": "t3.micro" } }, "Mappings": { "AWSInstanceType2Arch": { "t3.micro": { "Arch": "HVM64" }, "t4g.nano": { "Arch": "ARM64" } }, "AWSRegionArch2AMI": { "us-east-1" : { "HVM64" : "ami-12345678901234567", "ARM64" : "ami-23456789012345678" }, "us-west-1" : { "HVM64" : "ami-34567890123456789", "ARM64" : "ami-45678901234567890" }, "eu-west-1" : { "HVM64" : "ami-56789012345678901", "ARM64" : "ami-67890123456789012" }, "ap-southeast-1" : { "HVM64" : "ami-78901234567890123", "ARM64" : "ami-89012345678901234" }, "ap-northeast-1" : { "HVM64" : "ami-90123456789012345", "ARM64" : "ami-01234567890123456" } } }, "Resources" : { "MyEC2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "InstanceType" : { "Ref": "InstanceType" }, "ImageId" : { "Fn::FindInMap" : [ "AWSRegionArch2AMI", { "Ref": "AWS::Region" }, { "Fn::FindInMap": [ "AWSInstanceType2Arch", { "Ref": "InstanceType" }, "Arch" ]}] } } } } }
YAML
AWSTemplateFormatVersion: 2010-09-09 Parameters: InstanceType: Description: The EC2 instance type Type: String AllowedValues: - t3.micro - t4g.nano Default: t3.micro Mappings: AWSInstanceType2Arch: t3.micro: Arch: HVM64 t4g.nano: Arch: ARM64 AWSRegionArch2AMI: us-east-1: HVM64:ami-12345678901234567ARM64:ami-23456789012345678us-west-1: HVM64:ami-34567890123456789ARM64:ami-45678901234567890eu-west-1: HVM64:ami-56789012345678901ARM64:ami-67890123456789012ap-southeast-1: HVM64:ami-78901234567890123ARM64:ami-89012345678901234ap-northeast-1: HVM64:ami-90123456789012345ARM64:ami-01234567890123456Resources: myEC2Instance: Type: AWS::EC2::Instance Properties: InstanceType: !Ref InstanceType ImageId: Fn::FindInMap: - AWSRegionArch2AMI - Ref: AWS::Region - Fn::FindInMap: - AWSInstanceType2Arch - Ref: InstanceType - Arch
Wird Fn::FindInMap für umgebungsspezifische Konfigurationen verwendet
Das folgende Beispiel zeigt die Verwendung Fn::FindInMap für eine Vorlage mit einem Mappings Abschnitt, der eine einzelne Map enthält,. SecurityGroups Es enthält auch einen EnvironmentType Parameter, mit dem Sie angeben können, ob die Umgebung Dev oder istProd. Es ist standardmäßig aktiviert, kann Dev aber bei der Stack-Erstellung überschrieben werden.
Fn::FindInMapgibt auf der SecurityGroupIds Grundlage des Parameters den entsprechenden Wert zurück. EnvironmentType Fn::Splitteilt dann die durch Kommas getrennte Zeichenfolge der Sicherheitsgruppe IDs in eine Liste auf, was das erwartete Format für ist. SecurityGroupIds
Wenn Sie diesen Stack mit der EnvironmentType Einstellung auf bereitstellenDev, lautet der Wert SecurityGroupIds fürEC2Instance. sg-12345678 Wenn Sie EnvironmentType auf einstellenProd, verwendet er sg-abcdef01 undsg-ghijkl23.
JSON
{ "AWSTemplateFormatVersion": "2010-09-09", "Parameters":{ "EnvironmentType":{ "Description":"The environment type (Dev or Prod)", "Type":"String", "Default":"Dev", "AllowedValues":[ "Dev", "Prod" ] } }, "Mappings":{ "SecurityGroups":{ "Dev":{ "SecurityGroupIds":"sg-12345678" }, "Prod":{ "SecurityGroupIds":"sg-abcdef01,sg-ghijkl23" } } }, "Resources":{ "Ec2Instance":{ "Type":"AWS::EC2::Instance", "Properties":{ "ImageId": "{{resolve:ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64}}", "InstanceType": "t2.micro", "SecurityGroupIds":{ "Fn::Split":[ ",", { "Fn::FindInMap":[ "SecurityGroups", { "Ref":"EnvironmentType" }, "SecurityGroupIds" ] } ] } } } } }
YAML
AWSTemplateFormatVersion: 2010-09-09 Parameters: EnvironmentType: Description: The environment type (Dev or Prod) Type: String Default: Dev AllowedValues: - Dev - Prod Mappings: SecurityGroups: Dev: SecurityGroupIds:sg-12345678Prod: SecurityGroupIds:sg-abcdef01,sg-ghijkl23Resources: Ec2Instance: Type: AWS::EC2::Instance Properties: ImageId: '{{resolve:ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64}}' InstanceType: t2.micro SecurityGroupIds: Fn::Split: - "," - Fn::FindInMap: [ SecurityGroups, !Ref EnvironmentType, SecurityGroupIds ]
Unterstützte Funktionen
Sie können die folgenden Funktionen in einer Fn::FindInMap-Funktion verwenden:
-
Fn::FindInMap -
Ref
Zugehörige Ressourcen
Um andere systeminterne Funktionen oder einen Standardwert in einer Fn::FindInMap Funktion zu verwenden, müssen Sie die AWS::LanguageExtensions Transformation in Ihrer Vorlage deklarieren. Weitere Informationen finden Sie unter Fn::FindInMap
enhancements.
Diese verwandten Themen können bei der Entwicklung von Vorlagen, die diese Funktion verwenden, hilfreich sein. Fn::FindInMap
-
CloudFormationMappingsVorlagensyntax im AWS CloudFormation Benutzerhandbuch