

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 CloudFormation Benutzerhandbuch](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html).

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.

# `Lüfter:: FindInMap`
<a name="intrinsic-function-reference-findinmap"></a>

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
<a name="w2aac24c25b5"></a>

### JSON
<a name="intrinsic-function-reference-findinmap-syntax.json"></a>

```
{ "Fn::FindInMap" : [ "{{MapName}}", "{{TopLevelKey}}", "{{SecondLevelKey}}"] }
```

Wenn Sie einen Fallback-Wert für den Fall angeben möchten, dass ein Schlüssel im Mapping nicht gefunden wird, fügen Sie Folgendes hinzu: `DefaultValue`

```
{ "Fn::FindInMap" : [ "{{MapName}}", "{{TopLevelKey}}", "{{SecondLevelKey}}", {"DefaultValue": "{{DefaultValue}}"}] }
```

### YAML
<a name="intrinsic-function-reference-findinmap-syntax.yaml"></a>

Syntax für den vollständigen Funktionsnamen:

```
Fn::FindInMap: [ {{MapName}}, {{TopLevelKey}}, {{SecondLevelKey}} ]
```

Syntax für die Kurzform:

```
!FindInMap [ {{MapName}}, {{TopLevelKey}}, {{SecondLevelKey}} ]
```

Wenn Sie einen Fallback-Wert für den Fall angeben möchten, dass ein Schlüssel in der Zuordnung nicht gefunden wird, fügen Sie Folgendes hinzu: `DefaultValue`

Syntax für den vollständigen Funktionsnamen:

```
Fn::FindInMap:
  - {{MapName}}
  - {{TopLevelKey}}
  - {{SecondLevelKey}}
  - DefaultValue: {{DefaultValue}}
```

Syntax für die Kurzform:

```
!FindInMap
  - {{MapName}}
  - {{TopLevelKey}}
  - {{SecondLevelKey}}
  - DefaultValue: {{DefaultValue}}
```

**Anmerkung**  
Zwei Instances von zwei Funktionen dürfen nicht im Kurzformat geschachtelt werden.

## Parameters
<a name="w2aac24c25b7"></a>

MapName  <a name="MapName"></a>
Gibt den logischen Namen einer im Abschnitt "Mappings" deklarierten Zuweisung an, die die Schlüssel und Werte enthält.

TopLevelKey  <a name="TopLevelKey"></a>
Gibt den Namen des Schlüssels der obersten Ebene an. Sein Wert ist eine Auflistung von Schlüssel-Wert-Paaren.

SecondLevelKey  <a name="SecondLevelKey"></a>
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.

DefaultValue  <a name="DefaultValue"></a>
Der Wert, der `Fn::FindInMap` zurückgegeben `SecondLevelKey` wird, wenn entweder das `TopLevelKey` oder nicht in der angegebenen Zuordnung gefunden wird. Dieser Parameter ist optional. Wenn er weggelassen wird`Fn::FindInMap`, wird ein Fehler ausgelöst, wenn ein Schlüssel nicht gefunden wird.  
Der vierte Parameter muss eine Map mit dem Schlüssel sein`DefaultValue`. Beispiel: `{"DefaultValue": "us-east-1"}`.

## Rückgabewert
<a name="w2aac24c25b9"></a>

Zurückgegeben wird der Wert, der dem `SecondLevelKey`-Parameter zugewiesen ist. Wenn das `TopLevelKey` oder nicht gefunden `SecondLevelKey` wird und a angegeben `DefaultValue` ist, `DefaultValue` wird stattdessen das zurückgegeben.

## Beispiele
<a name="intrinsic-function-reference-findinmap-examples"></a>

Das folgende Beispiele zeigt, wie die `Fn::FindInMap`-Funktion verwendet wird.

**Topics**
+ [Verwenden Sie Fn:: FindInMap mit regionsspezifischen Werten](#intrinsic-function-reference-findinmap-region-example)
+ [Verwenden Sie Fn:: FindInMap für umgebungsspezifische Konfigurationen](#intrinsic-function-reference-findinmap-environment-example)
+ [Verwenden Sie Fn: FindInMap mit einem Standardwert](#intrinsic-function-reference-findinmap-default-value-example)

### Verwenden Sie Fn:: FindInMap mit regionsspezifischen Werten
<a name="intrinsic-function-reference-findinmap-region-example"></a>

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.nano`wä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 gezeigten AMI-IDs sind Platzhalter für Demonstrationszwecke. 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 der häufig verwendeten 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](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/dynamic-references.html). 

#### JSON
<a name="intrinsic-function-reference-findinmap-region-example.json"></a>

```
{
  "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
<a name="intrinsic-function-reference-findinmap-region-example.yaml"></a>

```
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
```

### Verwenden Sie Fn:: FindInMap für umgebungsspezifische Konfigurationen
<a name="intrinsic-function-reference-findinmap-environment-example"></a>

Das folgende Beispiel zeigt, wie Sie `Fn::FindInMap` für eine Vorlage mit einem Abschnitt `Mappings` verwenden, der eine einzelne Karte `SecurityGroups`enthält. Sie enthält auch einen Parameter `EnvironmentType`, mit dem Sie angeben können, ob die Umgebung `Dev` oder `Prod`ist. Der Standardwert ist `Dev`, kann aber bei der Stack-Erstellung überschrieben werden.

`Fn::FindInMap` gibt das entsprechende `SecurityGroupIds` auf der Grundlage des Parameters `EnvironmentType` zurück. `Fn::Split` teilt dann die durch Komma getrennte Zeichenfolge der Sicherheitsgruppen-IDs in eine Liste auf, die das erwartete Format für [SecurityGroupIds](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-instance.html#cfn-ec2-instance-securitygroupids)ist.

Wenn Sie diesen Stack mit `EnvironmentType` auf `Dev`einstellen, wird `SecurityGroupIds` für `EC2Instance` zu `sg-12345678`. Wenn Sie `EnvironmentType` auf `Prod`setzen, werden `sg-abcdef01` und `sg-ghijkl23`verwendet.

#### JSON
<a name="intrinsic-function-reference-findinmap-environment-example.json"></a>

```
{
  "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
<a name="intrinsic-function-reference-findinmap-environment-example.yaml"></a>

```
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 ]
```

### Verwenden Sie Fn: FindInMap mit einem Standardwert
<a name="intrinsic-function-reference-findinmap-default-value-example"></a>

Im folgenden Beispiel wird a `DefaultValue` als Fallback verwendet, wenn ein Schlüssel im Mapping nicht gefunden wird. Wenn der aktuelle Wert im `RegionMap` Mapping nicht definiert AWS-Region ist, `Fn::FindInMap` kehrt er zurück, `t3.micro` anstatt einen Fehler auszulösen.

#### JSON
<a name="intrinsic-function-reference-findinmap-default-value-example.json"></a>

```
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Mappings": {
    "RegionMap": {
      "us-east-1": {
        "InstanceType": "t3.large"
      },
      "eu-west-1": {
        "InstanceType": "t3.medium"
      }
    }
  },
  "Resources": {
    "MyInstance": {
      "Type": "AWS::EC2::Instance",
      "Properties": {
        "ImageId": "{{resolve:ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64}}",
        "InstanceType": {
          "Fn::FindInMap": [
            "RegionMap",
            { "Ref": "AWS::Region" },
            "InstanceType",
            { "DefaultValue": "t3.micro" }
          ]
        }
      }
    }
  }
}
```

#### YAML
<a name="intrinsic-function-reference-findinmap-default-value-example.yaml"></a>

```
AWSTemplateFormatVersion: 2010-09-09
Mappings:
  RegionMap:
    us-east-1:
      InstanceType: t3.large
    eu-west-1:
      InstanceType: t3.medium
Resources:
  MyInstance:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: '{{resolve:ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64}}'
      InstanceType: !FindInMap
        - RegionMap
        - !Ref AWS::Region
        - InstanceType
        - DefaultValue: t3.micro
```

## Unterstützte Funktionen
<a name="w2aac24c25c13"></a>

Sie können die folgenden Funktionen in einer `Fn::FindInMap`-Funktion verwenden:
+ `Fn::FindInMap`
+ `Ref`

## Zugehörige Ressourcen
<a name="w2aac24c25c15"></a>

Um systeminterne Funktionen außerhalb `Fn::FindInMap` und `Ref` in den Parametern einer `Fn::FindInMap` Funktion zu verwenden, müssen Sie die `AWS::LanguageExtensions` Transformation in Ihrer Vorlage deklarieren. Weitere Informationen finden Sie unter [`Fn:: FindInMap Verbesserungen`](intrinsic-function-reference-findinmap-enhancements.md).

Diese verwandten Themen können hilfreich sein, wenn Sie Vorlagen entwickeln, die die Funktion `Fn::FindInMap` verwenden.
+ [`Fn::Sub`](intrinsic-function-reference-sub.md)
+ [CloudFormationMappingsVorlagensyntax](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/mappings-section-structure.html) *im Benutzerhandbuch AWS CloudFormation *