

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.

# Bedingungsfunktionen
<a name="intrinsic-function-reference-conditions"></a>

Sie können intrinsische Funktionen wie `Fn::If` oder `Fn::Equals`verwenden, um Stapelressourcen auf der Grundlage einer bedingten Logik zu erstellen und zu konfigurieren. Diese Bedingungen werden bei der Erstellung oder Aktualisierung von Stapeln ausgewertet. Nachdem Sie alle Bedingungen definiert haben, können Sie diese mit Ressourcen oder Ressourceneigenschaften in den Abschnitten `Resources` und `Outputs` einer Vorlage verknüpfen.

Für fortgeschrittene Szenarien können Sie Bedingungen mit den Funktionen `Fn::And` oder `Fn::Or` kombinieren oder `Fn::Not` verwenden, um den Wert einer Bedingung zu negieren. Sie können auch Bedingungen verschachteln, um eine komplexere bedingte Logik zu erstellen.

Wenn Sie mit der Verwendung von Bedingungen in Ihren Vorlagen noch nicht vertraut sind, empfehlen wir Ihnen, zunächst das Thema [Syntax der CloudFormation Vorlagenbedingungen](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/conditions-section-structure.html) im *AWS CloudFormation Benutzerhandbuch* zu lesen.

**Anmerkung**  
Sie müssen alle Bedingungen im Abschnitt `Conditions` einer Vorlage definieren, mit Ausnahme der `Fn::If`-Bedingungen. Sie können die Bedingung `Fn::If` im Attribut `Metadata`, im Attribut `UpdatePolicy` und die Eigenschaftswerte in den Abschnitten `Resources` und `Outputs` verwenden.

**Topics**
+ [`Fn::And`](#intrinsic-function-reference-conditions-and)
+ [`Fn::Equals`](#intrinsic-function-reference-conditions-equals)
+ [`Fn::If`](#intrinsic-function-reference-conditions-if)
+ [`Fn::Not`](#intrinsic-function-reference-conditions-not)
+ [`Fn::Or`](#intrinsic-function-reference-conditions-or)
+ [Unterstützte Funktionen](#w2aac24c20c25)
+ [Beispielvorlage](#conditions-sample-templates)

## `Fn::And`
<a name="intrinsic-function-reference-conditions-and"></a>

Gibt `true` zurück, wenn alle angegebenen Bedingungen als wahr bewertet werden, oder `false`, wenn eine der Bedingungen als falsch bewertet wird. `Fn::And` fungiert als UND-Verknüpfung. Die Mindestanzahl von Bedingungen, die Sie verwenden können, ist 2 und die maximale Anzahl ist 10.

### Deklaration
<a name="intrinsic-function-reference-conditions-and-syntax"></a>

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

```
"Fn::And": [{{{condition}}}, {{{...}}}]
```

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

Syntax für den vollständigen Funktionsnamen:

```
Fn::And: [{{condition}}]
```

Syntax für die Kurzform:

```
!And [{{condition}}]
```

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

condition  <a name="fn-and-condition"></a>
Eine Bedingung, die den Wert `true` oder `false` ergibt.

### `Fn::And` Verwendungsbeispiele
<a name="w2aac24c20c13b9"></a>

Die folgende `MyAndCondition` ergibt „true“, wenn der referenzierte Sicherheitsgruppenname `sg-mysggroup` entspricht und wenn `SomeOtherCondition` „true“ ergibt:

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

```
"MyAndCondition": {
   "Fn::And": [
      {"Fn::Equals": ["sg-mysggroup", {"Ref": "ASecurityGroup"}]},
      {"Condition": "SomeOtherCondition"}
   ]
}
```

#### YAML
<a name="intrinsic-function-reference-conditions-and-example.yaml"></a>

```
MyAndCondition: !And
  - !Equals ["sg-mysggroup", !Ref ASecurityGroup]
  - !Condition SomeOtherCondition
```

## `Fn::Equals`
<a name="intrinsic-function-reference-conditions-equals"></a>

Vergleicht, ob zwei Werte gleich sind. Gibt `true` zurück, wenn die beiden Werte identisch sind, oder `false`, wenn sie nicht identisch nicht.

### Deklaration
<a name="intrinsic-function-reference-conditions-equals-syntax"></a>

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

```
"Fn::Equals" : ["{{value_1}}", "{{value_2}}"]
```

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

Syntax für den vollständigen Funktionsnamen:

```
Fn::Equals: [{{value_1}}, {{value_2}}]
```

Syntax für die Kurzform:

```
!Equals [{{value_1}}, {{value_2}}]
```

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

value  
Ein String-Wert, den Sie vergleichen möchten.

### `Fn::Equals` Verwendungsbeispiele
<a name="w2aac24c20c15b9"></a>

Die folgende `IsProduction`-Bedingung ergibt „true“, wenn der Wert für den `EnvironmentType`-Parameter `prod` entspricht:

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

```
"IsProduction" : {
   "Fn::Equals": [
      {"Ref": "EnvironmentType"},
      "prod"
   ]
}
```

#### YAML
<a name="intrinsic-function-reference-conditions-equals-example.yaml"></a>

```
IsProduction:
  !Equals [!Ref EnvironmentType, prod]
```

## `Fn::If`
<a name="intrinsic-function-reference-conditions-if"></a>

Gibt einen Wert zurück, wenn die angegebene Bedingung `true` entspricht, und einen anderen Wert, wenn die angegebene Bedingung `false` entspricht. CloudFormationUnterstützt derzeit die `Fn::If` intrinsische Funktion in den `Metadata` Attribut-, `UpdatePolicy` Attribut- und Eigenschaftswerten im `Resources` Abschnitt und in den `Outputs` Abschnitten einer Vorlage. Sie können den Pseudoparameter `AWS::NoValue` als Rückgabewert verwenden, um die entsprechende Eigenschaft zu entfernen.

### Deklaration
<a name="intrinsic-function-reference-conditions-if-syntax"></a>

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

```
"Fn::If": [{{condition_name}}, {{value_if_true}}, {{value_if_false}}]
```

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

Syntax für den vollständigen Funktionsnamen:

```
Fn::If: [{{condition_name}}, {{value_if_true}}, {{value_if_false}}]
```

Syntax für die Kurzform:

```
!If [{{condition_name}}, {{value_if_true}}, {{value_if_false}}]
```

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

condition\_name  <a name="condition_name"></a>
Ein Verweis auf eine Bedingung im Abschnitt „Conditions“. Verwenden Sie den Namen der Bedingung, um darauf zu verweisen.

value\_if\_true  <a name="value_if_true"></a>
Ein Wert, der zurückgegeben werden soll, wenn die angegebene Bedingung true ergibt.

value\_if\_false  <a name="value_if_false"></a>
Ein Wert, der zurückgegeben werden soll, wenn die angegebene Bedingung `false` ergibt.

### `Fn::If` Verwendungsbeispiele
<a name="w2aac24c20c19b9"></a>

**Topics**
+ [Bedingte Auswahl einer Ressource](#w2aac24c20c19b9b5)
+ [Bedingte Ausgaben](#w2aac24c20c19b9b7)
+ [Bedingte Array-Werte](#w2aac24c20c19b9b9)
+ [Bedingte Eigenschaften und Eigenschaftswerte](#w2aac24c20c19b9c11)
+ [Richtlinien für bedingte Aktualisierungen](#w2aac24c20c19b9c13)

#### Bedingte Auswahl einer Ressource
<a name="w2aac24c20c19b9b5"></a>

Das folgende Beispiel verwendet eine `Fn::If` Funktion in einer EC2 Amazon-Ressourcendefinition, um zu bestimmen, welche Sicherheitsgruppenressource der Instance zugeordnet werden soll. Wenn die `CreateNewSecurityGroup` Bedingung als wahr ausgewertet wird, wird der referenzierte Wert von `NewSecurityGroup` (einer Sicherheitsgruppe, die an anderer Stelle in der Vorlage erstellt wurde) CloudFormation verwendet, um die `SecurityGroupIds` Eigenschaft anzugeben. Wenn der Wert falsch `CreateNewSecurityGroup` ist, wird der referenzierte Wert von CloudFormation verwendet `ExistingSecurityGroupId` (ein Parameter, der auf eine vorhandene Sicherheitsgruppe verweist).

##### JSON
<a name="intrinsic-function-reference-conditions-if-example1.json"></a>

```
"Resources": {
  "EC2Instance": {
    "Type": "AWS::EC2::Instance",
    "Properties": {
      "ImageId": "ami-0abcdef1234567890",
      "InstanceType": "t3.micro",
      "SecurityGroupIds": {
        "Fn::If": [
          "CreateNewSecurityGroup",
          [{"Ref": "NewSecurityGroup"}],
          [{"Ref": "ExistingSecurityGroupId"}]
        ]
      }]
    }
  }
}
```

##### YAML
<a name="intrinsic-function-reference-conditions-if-example1.yaml"></a>

```
Resources:
  EC2Instance:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: ami-0abcdef1234567890
      InstanceType: t3.micro
      SecurityGroupIds: !If
        - CreateNewSecurityGroup
        - [!Ref NewSecurityGroup]
        - [!Ref ExistingSecurityGroupId]
```

#### Bedingte Ausgaben
<a name="w2aac24c20c19b9b7"></a>

Im Abschnitt `Output` einer Vorlage können Sie die Funktion `Fn::If` verwenden, um Informationen bedingt auszugeben. Wenn im folgenden Codeausschnitt die `CreateNewSecurityGroup` Bedingung als wahr ausgewertet wird, wird die Sicherheitsgruppen-ID der Ressource CloudFormation ausgegeben. `NewSecurityGroup` Wenn die Bedingung falsch ist, wird die Sicherheitsgruppen-ID der Ressource CloudFormation ausgegeben. `ExistingSecurityGroup`

##### JSON
<a name="intrinsic-function-reference-conditions-if-example2.json"></a>

```
"Outputs" : {
  "SecurityGroupId" : {
    "Description" : "Group ID of the security group used.",
    "Value" : {
      "Fn::If" : [
        "CreateNewSecurityGroup",
        {"Ref" : "NewSecurityGroup"},
        {"Ref" : "ExistingSecurityGroupId"}
      ]
    }
  }
}
```

##### YAML
<a name="intrinsic-function-reference-conditions-if-example2.yaml"></a>

```
Outputs:
  SecurityGroupId: 
    Description: Group ID of the security group used.
    Value: !If [CreateNewSecurityGroup, !Ref NewSecurityGroup, !Ref ExistingSecurityGroupId]
```

#### Bedingte Array-Werte
<a name="w2aac24c20c19b9b9"></a>

Das folgende Beispiel verwendet `Fn::If`, um abhängig von einer Bedingung verschiedene Array-Werte zu liefern. Wenn die Bedingung `MoreThan2AZs` als wahr ausgewertet wird, verwendet er drei öffentliche Teilnetze. Andernfalls verwendet es nur zwei öffentliche Subnetze.

##### JSON
<a name="intrinsic-function-reference-conditions-if-example-arrays.json"></a>

```
"Subnets": {
  "Fn::If": [
    "MoreThan2AZs",
    [
      {"Fn::ImportValue": "PublicSubnet01"},
      {"Fn::ImportValue": "PublicSubnet02"},
      {"Fn::ImportValue": "PublicSubnet03"}
    ],
    [
      {"Fn::ImportValue": "PublicSubnet01"},
      {"Fn::ImportValue": "PublicSubnet02"}
    ]
  ]
}
```

##### YAML
<a name="intrinsic-function-reference-conditions-if-example-arrays.yaml"></a>

```
Subnets:
  Fn::If:
    - MoreThan2AZs
    - - Fn::ImportValue: PublicSubnet01
      - Fn::ImportValue: PublicSubnet02
      - Fn::ImportValue: PublicSubnet03
    - - Fn::ImportValue: PublicSubnet01
      - Fn::ImportValue: PublicSubnet02
```

#### Bedingte Eigenschaften und Eigenschaftswerte
<a name="w2aac24c20c19b9c11"></a>

Das folgende Beispiel verwendet den Pseudoparameter `AWS::NoValue` in einer Funktion `Fn::If` . Die Bedingung verwendet nur dann einen Snapshot für eine Amazon RDS-DB-Instance, wenn eine Snapshot-ID angegeben ist. Wenn die `UseDBSnapshot` Bedingung als wahr ausgewertet wird, CloudFormation wird der `DBSnapshotName` Parameterwert für die `DBSnapshotIdentifier` Eigenschaft verwendet. Wenn die Bedingung „false“ ergibt, entfernt CloudFormation die `DBSnapshotIdentifier`-Eigenschaft.

Es verwendet auch eine `Fn::If`-Funktion in der `AllocatedStorage`-Eigenschaft der Amazon RDS DB-Instance. Wenn die Bedingung `IsProduction` als wahr ausgewertet wird, wird die Speichergröße auf `100`gesetzt. Andernfalls wird er auf `20`gesetzt.

##### JSON
<a name="intrinsic-function-reference-conditions-if-example3.json"></a>

```
"MyDatabase" : {
  "Type" : "AWS::RDS::DBInstance",
  "Properties": {
    "DBInstanceClass": "db.t3.micro",
    "AllocatedStorage": {
      "Fn::If": [
        "IsProduction",
        100,
        20
      ]
    },
    "Engine" : "MySQL",
    "EngineVersion" : "5.5",
    "MasterUsername" : { "Ref" : "DBUser" },
    "MasterUserPassword" : { "Ref" : "DBPassword" },
    "DBParameterGroupName" : { "Ref" : "MyRDSParamGroup" },
    "DBSnapshotIdentifier" : {
      "Fn::If" : [
        "UseDBSnapshot",
        {"Ref" : "DBSnapshotName"},
        {"Ref" : "AWS::NoValue"}
      ]
    }
  }
}
```

##### YAML
<a name="intrinsic-function-reference-conditions-if-example3.yaml"></a>

```
MyDatabase:
  Type: AWS::RDS::DBInstance
  Properties:
    DBInstanceClass: db.t3.micro
    AllocatedStorage: !If [IsProduction, 100, 20]
    Engine: MySQL
    EngineVersion: 5.5
    MasterUsername: !Ref DBUser
    MasterUserPassword: !Ref DBPassword
    DBParameterGroupName: !Ref MyRDSParamGroup
    DBSnapshotIdentifier: !If [UseDBSnapshot, !Ref DBSnapshotName, !Ref "AWS::NoValue"]
```

#### Richtlinien für bedingte Aktualisierungen
<a name="w2aac24c20c19b9c13"></a>

Der folgende Codeausschnitt bietet nur dann eine Auto Scaling-Aktualisierungsrichtlinie, wenn die `RollingUpdates`-Bedingung „true“ ergibt. Wenn die Bedingung als falsch ausgewertet wird, CloudFormation wird die `AutoScalingRollingUpdate` Aktualisierungsrichtlinie entfernt.

##### JSON
<a name="intrinsic-function-reference-conditions-if-example4.json"></a>

```
"UpdatePolicy": {
  "Fn::If": [
    "RollingUpdates",
    {
      "AutoScalingRollingUpdate": {
        "MaxBatchSize": 2,
        "MinInstancesInService": 2,
        "PauseTime": "PT0M30S"
      }
    },
    {
      "Ref": "AWS::NoValue"
    }
  ]
}
```

##### YAML
<a name="intrinsic-function-reference-conditions-if-example4.yaml"></a>

```
UpdatePolicy: !If
  - RollingUpdates
  - AutoScalingRollingUpdate:
      MaxBatchSize: 2
      MinInstancesInService: 2
      PauseTime: PT0M30S
  - !Ref "AWS::NoValue"
```

## `Fn::Not`
<a name="intrinsic-function-reference-conditions-not"></a>

Gibt `true` für eine Bedingung zurück, die `false` ergibt, oder gibt `false` für eine Bedingung zurück, die mit `true` ausgewertet wird. `Fn::Not` dient als NOT-Operator.

### Deklaration
<a name="intrinsic-function-reference-conditions-not-syntax"></a>

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

```
"Fn::Not": [{{{condition}}}]
```

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

Syntax für den vollständigen Funktionsnamen:

```
Fn::Not: [{{condition}}]
```

Syntax für die Kurzform:

```
!Not [{{condition}}]
```

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

condition  <a name="condition"></a>
Eine Bedingung wie z. B. `Fn::Equals`, die `true` oder `false` ergibt.

### `Fn::Not` Verwendungsbeispiele
<a name="w2aac24c20c21b9"></a>

Die folgende `EnvCondition`-Bedingung ergibt „true“, wenn der Wert für den `EnvironmentType`-Parameter nicht `prod` entspricht:

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

```
"MyNotCondition" : {
   "Fn::Not" : [{
      "Fn::Equals" : [
         {"Ref" : "EnvironmentType"},
         "prod"
      ]
   }]
}
```

#### YAML
<a name="intrinsic-function-reference-conditions-not-example.yaml"></a>

```
MyNotCondition:
  !Not [!Equals [!Ref EnvironmentType, prod]]
```

## `Fn::Or`
<a name="intrinsic-function-reference-conditions-or"></a>

Gibt `true` zurück, wenn alle angegebenen Bedingungen "true" ergeben, oder gibt `false` zurück, wenn eine der Bedingungen mit "false" ausgewertet wird. `Fn::Or` dient als OR-Operator. Die Mindestanzahl von Bedingungen, die Sie verwenden können, ist 2 und die maximale Anzahl ist 10.

### Deklaration
<a name="intrinsic-function-reference-conditions-or-syntax"></a>

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

```
"Fn::Or": [{{{condition}}}, {{{...}}}]
```

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

Syntax für den vollständigen Funktionsnamen:

```
Fn::Or: [{{condition, ...}}]
```

Syntax für die Kurzform:

```
!Or [{{condition, ...}}]
```

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

condition  
Eine Bedingung, die den Wert `true` oder `false` ergibt.

### `Fn::Or` Verwendungsbeispiele
<a name="w2aac24c20c23b9"></a>

Die folgende `MyOrCondition` ergibt „true“, wenn der referenzierte Sicherheitsgruppenname `sg-mysggroup` entspricht oder wenn `SomeOtherCondition` „true“ ergibt:

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

```
"MyOrCondition" : {
   "Fn::Or" : [
      {"Fn::Equals" : ["sg-mysggroup", {"Ref" : "ASecurityGroup"}]},
      {"Condition" : "SomeOtherCondition"}
   ]
}
```

#### YAML
<a name="intrinsic-function-reference-conditions-or-example.yaml"></a>

```
MyOrCondition:
  !Or [!Equals [sg-mysggroup, !Ref ASecurityGroup], Condition: SomeOtherCondition]
```

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

Sie können die folgenden Funktionen in der `Fn::If`-Bedingung verwenden:
+ `Fn::Base64`
+ `Fn::FindInMap`
+ `Fn::GetAtt`
+ `Fn::GetAZs`
+ `Fn::If`
+ `Fn::Join`
+ `Fn::Select`
+ `Fn::Sub`
+ `Ref`

Sie können die folgenden Funktionen in allen anderen Bedingungsfunktionen wie `Fn::Equals` und `Fn::Or` verwenden:
+ `Fn::FindInMap`
+ `Ref`
+ Andere Bedingungsfunktionen

## Beispielvorlage
<a name="conditions-sample-templates"></a>

### Bedingtes Erstellen von Ressourcen für einen Produktions-, Entwicklungs- oder Test-Stack
<a name="w2aac24c20c27b3"></a>

In einigen Fällen möchten Sie vielleicht Stacks erstellen, die ähnlich sind, aber kleinere Änderungen enthalten. Sie haben beispielsweise vielleicht eine Vorlage, die Sie für Produktionsanwendungen verwenden. Sie möchten denselben Produktions-Stack erstellen, damit Sie ihn für Entwicklung und Tests verwenden können. Für Entwicklung und Tests benötigen Sie aber wahrscheinlich nicht die gesamte zusätzliche Kapazität, die in einem Produktions-Stack enthalten ist. Stattdessen können Sie einen Umgebungstyp-Eingabeparameter verwenden, um bedingt spezifische Stack-Ressourcen für Produktion, Entwicklung oder Tests zu erstellen, wie im folgenden Beispiel dargestellt:

Sie können für den `prod`-Parameter `dev`, `test` oder `EnvType` angeben. Für jeden Umgebungstyp gibt die Vorlage gibt einen anderen Instance-Typ an. Die Instance-Typen können von einem großen, für Datenverarbeitung optimierten Instance-Typ bis zu einem kleinen Instance-Typ für den allgemeinen Einsatz reichen. Um den Instancetyp bedingt festzulegen, definiert die Vorlage zwei Bedingungen im Abschnitt `Conditions` der Vorlage:,`CreateProdResources` die als wahr ausgewertet wird, wenn der Parameterwert `EnvType` gleich `prod` ist, und,`CreateDevResources` die als wahr ausgewertet wird, wenn der Parameterwert gleich `dev`ist.

Die Vorlage verschachtelt in der `InstanceType`-Eigenschaft zwei intrinsische `Fn::If`-Funktionen, um zu ermitteln, welcher Instance-Typ verwendet wende soll. Wenn die `CreateProdResources`-Bedingung erfüllt ist, ist der Instance-Typ `c5.xlarge`. Wenn die Bedingung nicht erfüllt ist, wird die `CreateDevResources`-Bedingung ausgewertet. Wenn die `CreateDevResources`-Bedingung erfüllt ist, ist der Instance-Typ `t3.medium` oder ansonsten ist der Instance-Typ `t3.small`.

Zusätzlich zum Instance-Typ erstellt die Produktionsumgebung ein EC2 Amazon-Volume und fügt es der Instance hinzu. Die Ressourcen `MountPoint` und `NewVolume` werden mit der `CreateProdResources`-Bedingung verknüpft, sodass die Ressourcen nur erstellt werden, wenn die Bedingung „true“ ergibt.

**Example JSON**  

```
{
  "AWSTemplateFormatVersion" : "2010-09-09",
  "Parameters" : {
    "EnvType" : {
      "Description" : "Environment type.",
      "Default" : "test",
      "Type" : "String",
      "AllowedValues" : ["prod", "dev", "test"],
      "ConstraintDescription" : "must specify prod, dev, or test."
    }
  },
  "Conditions" : {
    "CreateProdResources" : {"Fn::Equals" : [{"Ref" : "EnvType"}, "prod"]},
    "CreateDevResources" : {"Fn::Equals" : [{"Ref" : "EnvType"}, "dev"]}
  },
  "Resources" : {
    "EC2Instance" : {
      "Type" : "AWS::EC2::Instance",
      "Properties" : {
        "ImageId" : "ami-1234567890abcdef0",
        "InstanceType" : { "Fn::If" : [
          "CreateProdResources",
          "c5.xlarge",
          {"Fn::If" : [
            "CreateDevResources",
            "t3.medium",
            "t3.small"
          ]}
        ]}
      }
    },
    "MountPoint" : {
      "Type" : "AWS::EC2::VolumeAttachment",
      "Condition" : "CreateProdResources",
      "Properties" : {
        "InstanceId" : { "Ref" : "EC2Instance" },
        "VolumeId"  : { "Ref" : "NewVolume" },
        "Device" : "/dev/sdh"
      }
    },
    "NewVolume" : {
      "Type" : "AWS::EC2::Volume",
      "Condition" : "CreateProdResources",
      "Properties" : {
        "Size" : "100",
        "AvailabilityZone" : { "Fn::GetAtt" : [ "EC2Instance", "AvailabilityZone" ]}
      }
    }
  }
}
```

**Example YAML**  

```
AWSTemplateFormatVersion: "2010-09-09"
Parameters:
  EnvType:
    Description: Environment type.
    Default: test
    Type: String
    AllowedValues: [prod, dev, test]
    ConstraintDescription: must specify prod, dev, or test.
Conditions:
  CreateProdResources: !Equals [!Ref EnvType, prod]
  CreateDevResources: !Equals [!Ref EnvType, "dev"]
Resources:
  EC2Instance:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: ami-1234567890abcdef0
      InstanceType: !If [CreateProdResources, c5.xlarge, !If [CreateDevResources, t3.medium, t3.small]]    
  MountPoint:
    Type: AWS::EC2::VolumeAttachment
    Condition: CreateProdResources
    Properties:
      InstanceId: !Ref EC2Instance
      VolumeId: !Ref NewVolume
      Device: /dev/sdh
  NewVolume:
    Type: AWS::EC2::Volume
    Condition: CreateProdResources
    Properties:
      Size: 100
      AvailabilityZone: !GetAtt EC2Instance.AvailabilityZone
```

**Anmerkung**  
Ausführlichere Beispiele für die Verwendung von Bedingungen zur Erstellung von Ressourcen finden Sie im Thema [`Condition` Attribut](aws-attribute-condition.md) .