Fn::FindInMap - 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.

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 TopLevelKey zugewiesenen 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.

Verwenden Sie Fn::FindInMap mit regionsspezifischen Werten

Das folgende Beispiel zeigt, wie es Fn::FindInMap für eine Vorlage mit einem Mappings Abschnitt verwendet wird, der eine einzelne Karte enthältRegionMap, die Regionen zugeordnet AMIs ist. AWS

  • Die Karte hat fünf Schlüssel auf oberster Ebene, die verschiedenen AWS Regionen entsprechen.

  • Jedem Schlüssel der obersten Ebene wird eine Liste mit zwei Schlüsseln der zweiten Ebene zugewiesen"HVMG2", die der Architektur AMI von entsprechen. "HVM64"

  • Jedem der Schlüssel der zweiten Ebene wird ein entsprechender AMI Name zugewiesen.

Die Beispielvorlage enthält eine Ressource des Typs AWS::EC2::Instance, deren Eigenschaft ImageId durch die Funktion FindInMap festgelegt wird.

MapName ist auf die Karte eingestellt, in diesem Beispiel "RegionMap". TopLevelKey wird auf den Bereich gesetzt, in dem der Stack erstellt wird, der durch den Pseudoparameter "AWS::Region" bestimmt wird. SecondLevelKey ist auf die gewünschte Architektur eingestellt, in diesem Beispiel "HVM64".

FindInMapgibt den AMI zugewiesenen Wert zurück. FindInMap Für ein HVM64 Beispiel in us-east-1 FindInMap würde zurückkehren. "ami-0ff8a91507f77f867"

Anmerkung

Betrachten Sie AWS Systems Manager Parameter als Alternative zum Mappings Abschnitt. Um zu vermeiden, AMI dass alle Ihre Vorlagen jedes Mal mit einer neuen ID aktualisiert werden, wenn sich die, die Sie verwenden möchten, ändern, verwenden Sie den AWS::SSM::Parameter::Value<AWS::EC2::Image::Id> Parametertyp, 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 Verweisen Sie mit von CloudFormation -bereitgestellten Parametertypen auf vorhandene Ressourcen und Systems Manager Manager-Parameter.

JSON

{ ... "Mappings" : { "RegionMap" : { "us-east-1" : { "HVM64" : "ami-0ff8a91507f77f867", "HVMG2" : "ami-0a584ac55a7631c0c" }, "us-west-1" : { "HVM64" : "ami-0bdb828fd58c52235", "HVMG2" : "ami-066ee5fd4a9ef77f1" }, "eu-west-1" : { "HVM64" : "ami-047bb4163c506cd98", "HVMG2" : "ami-0a7c483d527806435" }, "ap-southeast-1" : { "HVM64" : "ami-08569b978cc4dfa10", "HVMG2" : "ami-0be9df32ae9f92309" }, "ap-northeast-1" : { "HVM64" : "ami-06cd52961ce9f0d85", "HVMG2" : "ami-053cdd503598e4a9d" } } }, "Resources" : { "myEC2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "ImageId" : { "Fn::FindInMap" : [ "RegionMap", { "Ref" : "AWS::Region" }, "HVM64" ] }, "InstanceType" : "t2.micro" } } } }

YAML

Mappings: RegionMap: us-east-1: HVM64: "ami-0ff8a91507f77f867" HVMG2: "ami-0a584ac55a7631c0c" us-west-1: HVM64: "ami-0bdb828fd58c52235" HVMG2: "ami-066ee5fd4a9ef77f1" eu-west-1: HVM64: "ami-047bb4163c506cd98" HVMG2: "ami-0a7c483d527806435" ap-southeast-1: HVM64: "ami-08569b978cc4dfa10" HVMG2: "ami-0be9df32ae9f92309" ap-northeast-1: HVM64: "ami-06cd52961ce9f0d85" HVMG2: "ami-053cdd503598e4a9d" Resources: myEC2Instance: Type: "AWS::EC2::Instance" Properties: ImageId: !FindInMap - RegionMap - !Ref 'AWS::Region' - HVM64 InstanceType: t2.micro

Verwenden Sie Fn::FindInMap für umgebungsspezifische Konfigurationen

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. Dies ist das erwartete Format für 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

{ ... "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": "ami-0a70b9d193ae8a799", "InstanceType": "t2.micro", "SecurityGroupIds":{ "Fn::Split":[ ",", { "Fn::FindInMap":[ "SecurityGroups", { "Ref":"EnvironmentType" }, "SecurityGroupIds" ] } ] } } } } }

YAML

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: ami-0a70b9d193ae8a799 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