

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.

# `Fn::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"] }
```

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

**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.

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

Zurückgegeben wird der Wert, der dem `SecondLevelKey`-Parameter zugewiesen ist.

## 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 regionalspezifischen 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 regionalspezifischen 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 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](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 auf der `SecurityGroupIds` Grundlage des `EnvironmentType` Parameters den entsprechenden Wert zurück. `Fn::Split`teilt dann die durch Kommas getrennte Zeichenfolge der Sicherheitsgruppe IDs in eine Liste auf, was das erwartete Format für ist. [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-instance.html#cfn-ec2-instance-securitygroupids](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-instance.html#cfn-ec2-instance-securitygroupids)

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

## 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 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`](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 *