Dies ist das neue CloudFormation Template Reference Guide. Bitte aktualisieren Sie Ihre Lesezeichen und Links. Hilfe zu den ersten CloudFormation Schritten finden Sie im AWS CloudFormationBenutzerhandbuch.
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.
Parameters
- 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
Verwenden Sie Fn::FindInMap mit regionalspezifischen Werten
Das folgende Beispiel zeigt, wie Sie Fn::FindInMap in einer Vorlage verwenden, die zwei Mappings enthält: AWSInstanceType2Arch und AWSRegionArch2AMI. Es enthält auch einen Parameter InstanceType, mit dem Sie zwischen t3.micro und t4g.nanowählen können. Die Vorgabe ist,t3.micro aber das kann bei der Stack-Erstellung überschrieben werden.
Fn::FindInMap bestimmt zunächst die Architektur (HVM64 oder ARM64) anhand des ausgewählten Instancetyps und sucht dann die richtige AMI-ID für diese Architektur im aktuellen AWS-Region.
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 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 unter Verwendung dynamischer Referenzen.
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
Verwenden Sie Fn::FindInMap für umgebungsspezifische Konfigurationen
Das folgende Beispiel zeigt, wie Sie Fn::FindInMap für eine Vorlage mit einem Abschnitt Mappings verwenden, der eine einzelne Karte SecurityGroupsenthält. Sie enthält auch einen Parameter EnvironmentType, mit dem Sie angeben können, ob die Umgebung Dev oder Prodist. Der Standardwert ist Dev, kann aber bei der Stack-Erstellung überschrieben werden.
Fn::FindInMapgibt auf der SecurityGroupIds Grundlage des EnvironmentType Parameters den entsprechenden Wert zurück. 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 EnvironmentType auf Deveinstellen, wird SecurityGroupIds für EC2Instance zu sg-12345678. Wenn Sie EnvironmentType auf Prodsetzen, werden sg-abcdef01 und sg-ghijkl23verwendet.
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 intrinsische 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 hilfreich sein, wenn Sie Vorlagen entwickeln, die die Funktion Fn::FindInMap verwenden.
-
CloudFormationMappingsVorlagensyntax im Benutzerhandbuch AWS CloudFormation