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"
.
FindInMap
gibt 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::FindInMap
gibt auf der SecurityGroupIds
Grundlage des Parameters den entsprechenden Wert zurück. EnvironmentType
Fn::Split
teilt 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