

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.

# Aufteilung einer Vorlage in wiederverwendbare Teile mit verschachtelten Stapeln
<a name="using-cfn-nested-stacks"></a>

Wenn Ihre Infrastruktur wächst, müssen Sie möglicherweise immer wieder identische Ressourcenkonfigurationen für mehrere Vorlagen erstellen. Um diese Redundanz zu vermeiden, können Sie diese gemeinsamen Konfigurationen in spezielle Vorlagen aufteilen. Dann können Sie die Ressource [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-cloudformation-stack.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-cloudformation-stack.html) in anderen Vorlagen verwenden, um auf diese speziellen Vorlagen zu verweisen und so verschachtelte Stapel zu erstellen.

Nehmen wir zum Beispiel an, Sie haben eine Load Balancer-Konfiguration, die Sie für die meisten Ihrer Stacks verwenden. Anstatt dieselbe Konfigurationen zu kopieren und in Ihre Vorlagen einzufügen, können Sie eine dedizierte Vorlage für den Load Balancer erstellen. Dann können Sie diese Vorlage in anderen Vorlagen referenzieren, die dieselbe Load Balancer-Konfiguration benötigen.

Verschachtelte Stapel können ihrerseits weitere verschachtelte Stapel enthalten, so dass eine Hierarchie von Stapeln entsteht, wie in der folgenden Abbildung dargestellt. Der-*WurzelStack* ist der oberste Stack, zu dem letztlich alle verschachtelten Stack gehören. Jeder verschachtelte Stapel hat einen unmittelbaren übergeordneten Stapel. Für die erste Ebene von verschachtelten Stapeln ist der Stammstapel auch der übergeordnete Stapel.
+ Stack A ist der Root-Stack für alle anderen – verschachtelten – Stacks in der Hierarchie.
+ Für Stack B ist Stack A sowohl der übergeordnete Stack als auch der Root-Stack.
+ Für Stack D ist Stack C der übergeordnete Stack, während Stack B der übergeordnete Stack für Stack C ist.

![\[Verschachtelte Stacks, die als Teil eines anderen Stacks erstellt werden, besitzen einen unmittelbar übergeordneten Stack sowie den Root-Stack in der Hauptebene.\]](http://docs.aws.amazon.com/de_de/AWSCloudFormation/latest/UserGuide/images/cfn-console-nested-stacks.png)


**Topics**
+ [Vorher-Nachher-Beispiel für die Aufteilung einer Vorlage](#create-nested-stack-template)
+ [Beispiel für eine verschachtelte Stack-Architektur](#nested-stack-examples)
+ [Ausführen von Stapeloperationen auf verschachtelten Stapeln](#perform-stack-operations-on-nested-stacks)
+ [Ähnliche Informationen](#nested-stacks-related-information)

## Vorher-Nachher-Beispiel für die Aufteilung einer Vorlage
<a name="create-nested-stack-template"></a>

Dieses Beispiel zeigt, wie Sie eine einzelne, große CloudFormation Vorlage mithilfe verschachtelter Vorlagen in ein strukturierteres und wiederverwendbares Design umstrukturieren können. Die Vorlage "Vor der Verschachtelung von Stapeln" zeigt zunächst alle in einer Datei definierten Ressourcen an. Das kann unübersichtlich und schwer zu verwalten werden, wenn die Anzahl der Ressourcen wächst. Die Vorlage "Nach Verschachtelung der Stapel" teilt die Ressourcen in kleinere, separate Vorlagen auf. Jeder verschachtelte Stapel verwaltet einen bestimmten Satz zusammengehöriger Ressourcen, wodurch die Gesamtstruktur übersichtlicher und leichter zu pflegen ist.


| Vor der Verschachtelung von Stapeln | Nach der Verschachtelung von Stapeln | 
| --- | --- | 
| <pre>AWSTemplateFormatVersion: 2010-09-09<br />Parameters:<br />  InstanceType:<br />    Type: String<br />    Default: t2.micro<br />    Description: The EC2 instance type<br />  <br />  Environment:<br />    Type: String<br />    Default: Production<br />    Description: The deployment environment<br /><br />Resources:<br />  MyEC2Instance:<br />    Type: AWS::EC2::Instance<br />    Properties:<br />      ImageId: ami-1234567890abcdef0<br />      InstanceType: !Ref InstanceType<br /><br />  MyS3Bucket:<br />    Type: AWS::S3::Bucket</pre> | <pre>AWSTemplateFormatVersion: 2010-09-09<br />Resources:<br />  MyFirstNestedStack:<br />    Type: AWS::CloudFormation::Stack<br />    Properties:<br />      TemplateURL: https://s3.amazonaws.com/amzn-s3-demo-bucket/first-nested-stack.yaml<br />      Parameters:<br />        # Pass parameters to the nested stack if needed<br />        InstanceType: t3.micro<br /><br />  MySecondNestedStack:<br />    Type: AWS::CloudFormation::Stack<br />    Properties:<br />      TemplateURL: https://s3.amazonaws.com/amzn-s3-demo-bucket/second-nested-stack.yaml<br />      Parameters:<br />        # Pass parameters to the nested stack if needed<br />        Environment: Testing<br />    DependsOn: MyFirstNestedStack</pre> | 

## Beispiel für eine verschachtelte Stack-Architektur
<a name="nested-stack-examples"></a>

Dieser Abschnitt demonstriert eine verschachtelte Stack-Architektur, die aus einem Top-Level-Stack besteht, der auf einen verschachtelten Stack verweist. Der verschachtelte Stack setzt eine Node.js Lambda-Funktion ein, erhält einen Parameterwert vom Stack der obersten Ebene und gibt eine Ausgabe zurück, die über den Stack der obersten Ebene exponiert wird.

**Topics**
+ [Schritt 1: Erstellen Sie eine Vorlage für den verschachtelten Stack auf Ihrem lokalen System](#create-a-nested-stack-template)
+ [Schritt 2: Erstellen Sie eine Vorlage für den Top-Level-Stack auf Ihrem lokalen System](#create-a-nested-stack-parent-template)
+ [Schritt 3: Paketieren und verteilen Sie die Vorlagen](#create-a-nested-stack-parent-template)

### Schritt 1: Erstellen Sie eine Vorlage für den verschachtelten Stack auf Ihrem lokalen System
<a name="create-a-nested-stack-template"></a>

Das folgende Beispiel zeigt das Format der verschachtelten Stapelvorlage.

#### YAML
<a name="nested-stack-child-example.yaml"></a>

```
 1. AWSTemplateFormatVersion: 2010-09-09
 2. Description: Nested stack template for Lambda function deployment
 3. Parameters:
 4.   MemorySize:
 5.     Type: Number
 6.     Default: 128
 7.     MinValue: 128
 8.     MaxValue: 10240
 9.     Description: Lambda function memory allocation (128-10240 MB)
10. Resources:
11.   LambdaFunction:
12.     Type: AWS::Lambda::Function
13.     Properties:
14.       FunctionName: !Sub "${AWS::StackName}-Function"
15.       Runtime: nodejs18.x
16.       Handler: index.handler
17.       Role: !GetAtt LambdaExecutionRole.Arn
18.       Code:
19.         ZipFile: |
20.           exports.handler = async (event) => {
21.             return {
22.               statusCode: 200,
23.               body: JSON.stringify('Hello from Lambda!')
24.             };
25.           };
26.       MemorySize: !Ref MemorySize
27.   LambdaExecutionRole:
28.     Type: AWS::IAM::Role
29.     Properties:
30.       AssumeRolePolicyDocument:
31.         Version: '2012-10-17'
32.         Statement:
33.           - Effect: Allow
34.             Principal:
35.               Service: lambda.amazonaws.com
36.             Action: sts:AssumeRole
37.       ManagedPolicyArns:
38.         - 'arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole'
39. Outputs:
40.   LambdaArn:
41.     Description: ARN of the created Lambda function
42.     Value: !GetAtt LambdaFunction.Arn
```

### Schritt 2: Erstellen Sie eine Vorlage für den Top-Level-Stack auf Ihrem lokalen System
<a name="create-a-nested-stack-parent-template"></a>

Das folgende Beispiel zeigt das Format der Stack-Vorlage der obersten Ebene und der Ressource [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-cloudformation-stack.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-cloudformation-stack.html), die auf den Stack verweist, den Sie im vorherigen Schritt erstellt haben.

#### YAML
<a name="nested-stack-parent-example.yaml"></a>

```
 1. AWSTemplateFormatVersion: 2010-09-09
 2. Description: Top-level stack template that deploys a nested stack
 3. Resources:
 4.   NestedStack:
 5.     Type: AWS::CloudFormation::Stack
 6.     Properties:
 7.       TemplateURL: /path_to_template/nested-template.yaml
 8.       Parameters:
 9.         MemorySize: 256
10. Outputs:
11.   NestedStackLambdaArn:
12.     Description: ARN of the Lambda function from nested stack
13.     Value: !GetAtt NestedStack.Outputs.LambdaArn
```

### Schritt 3: Paketieren und verteilen Sie die Vorlagen
<a name="create-a-nested-stack-parent-template"></a>

**Anmerkung**  
Wenn Sie lokal mit Vorlagen arbeiten, kann Ihnen der AWS CLI **package** Befehl dabei helfen, Vorlagen für die Bereitstellung vorzubereiten. Es verarbeitet automatisch den Upload lokaler Artefakte zu Amazon S3 (einschließlich `TemplateURL`) und erzeugt eine neue Vorlagendatei mit aktualisierten Verweisen auf diese S3-Speicherorte. Weitere Informationen finden Sie unter [Laden Sie lokale Artefakte in einen S3-Bucket hoch mit dem AWS CLI](using-cfn-cli-package.md). 

Als nächstes können Sie den Befehl [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/package.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/package.html) verwenden, um die verschachtelte Vorlage in einen Amazon S3-Bucket hochzuladen.

```
aws cloudformation package \
  --s3-bucket amzn-s3-demo-bucket \
  --template /path_to_template/top-level-template.yaml \
  --output-template-file packaged-template.yaml \
  --output json
```

Der Befehl erzeugt eine neue Vorlage unter dem durch `--output-template-file`angegebenen Pfad. Es ersetzt die Referenz `TemplateURL` durch den Amazon S3-Speicherort, wie unten gezeigt.

**Resultierende Vorlage**

```
AWSTemplateFormatVersion: 2010-09-09
Description: Top-level stack template that deploys a nested stack
Resources:
  NestedStack:
    Type: AWS::CloudFormation::Stack
    Properties:
      TemplateURL: https://s3.us-west-2.amazonaws.com/amzn-s3-demo-bucket/8b3bb7aa7abfc6e37e2d06b869484bed.template
      Parameters:
        MemorySize: 256
Outputs:
  NestedStackLambdaArn:
    Description: ARN of the Lambda function from nested stack
    Value:
      Fn::GetAtt:
      - NestedStack
      - Outputs.LambdaArn
```

Nachdem Sie den Befehl **package** ausgeführt haben, können Sie die verarbeitete Vorlage mit dem Befehl [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/deploy/](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/deploy/) bereitstellen. Bei verschachtelten Stapeln, die IAM-Ressourcen enthalten, müssen Sie die IAM-Fähigkeiten bestätigen, indem Sie die Option `--capabilities` einfügen.

```
aws cloudformation deploy \
  --template-file packaged-template.yaml \
  --stack-name stack-name \
  --capabilities CAPABILITY_NAMED_IAM
```

## Ausführen von Stapeloperationen auf verschachtelten Stapeln
<a name="perform-stack-operations-on-nested-stacks"></a>

Wenn Sie mit verschachtelten Stapeln arbeiten, müssen Sie diese bei Operationen sorgfältig behandeln. Bestimmte Stack-Operationen, wie beispielsweise Stack-Aktualisierungen, sollten vom Root-Stack aus initiiert werden und nicht direkt auf den verschachtelten Stacks ausgeführt werden. Wenn Sie einen Stammstapel aktualisieren, werden nur verschachtelte Stapel mit Vorlagenänderungen aktualisiert. 

Außerdem kann das Vorhandensein von verschachtelten Stapeln die Operationen auf dem Stammstapel beeinflussen. Wenn zum Beispiel ein verschachtelter Stack im Zustand `UPDATE_ROLLBACK_IN_PROGRESS` stecken bleibt, wartet der Root-Stack, bis dieser verschachtelte Stack sein Rollback beendet hat, bevor er fortfährt. Bevor Sie mit den Aktualisierungsvorgängen fortfahren, vergewissern Sie sich, dass Sie über IAM-Berechtigungen verfügen, um eine Stack-Aktualisierung abzubrechen, falls diese zurückgesetzt wird. Weitere Informationen finden Sie unter [Steuern CloudFormation Sie den Zugriff mit AWS Identity and Access Management](control-access-with-iam.md).

Verwenden Sie die folgenden Verfahren, um den Stammstapel und die verschachtelten Stapel zu finden.

**So zeigen Sie den Root-Stack eines verschachtelten Stacks an**

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die CloudFormation Konsole unter [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/).

1. Wählen Sie auf der Seite **Stapel** den Namen des verschachtelten Stapels, dessen Stammstapel Sie sehen möchten.

   Verschachtelte Stapel zeigen **NESTED** über ihrem Stapelnamen an.

1. Wählen Sie auf der Registerkarte **Stackinfo** im Abschnitt **Übersicht** den Stacknamen aus, der als **Wurzelstack**aufgeführt ist.

**So zeigen Sie die verschachtelten Stacks eines Root-Stacks an**

1. Wählen Sie im Stammstapel, dessen verschachtelte Stapel Sie anzeigen möchten, die Registerkarte **Ressourcen** .

1. Suchen Sie in der Spalte **Typ** nach Ressourcen des Typs. **AWS::CloudFormation::Stack**

## Ähnliche Informationen
<a name="nested-stacks-related-information"></a>
+ [Verschachteln eines vorhandenen Stacks](resource-import-nested-stacks.md)
+ [Verstehen des Aktualisierungsverhaltens von Stack-Ressourcen](using-cfn-updating-stacks-update-behaviors.md)
+ [Weiteres Rollback von fehlgeschlagenen verschachtelten Stack-Updates](using-cfn-updating-stacks-continueupdaterollback.md#nested-stacks)
+ [Rollback-Fehler bei verschachtelten Stapeln](troubleshooting.md#troubleshooting-errors-nested-stacks-are-stuck)