

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.

# Verschachteln eines vorhandenen Stacks
<a name="resource-import-nested-stacks"></a>

Verwenden Sie das `resource import`-Feature, um einen vorhandenen Stack in einem anderen vorhandenen Stack zu verschachteln. Verschachtelte Stacks sind gängige Komponenten, die Sie in anderen Vorlagen deklarieren und referenzieren. Auf diese Weise können Sie das Kopieren und Einfügen derselben Konfigurationen in Ihre Vorlagen vermeiden und Stack-Aktualisierungen vereinfachen. Wenn Sie über eine Vorlage für eine gängige Komponente verfügen, können Sie die `AWS::CloudFormation::Stack`-Ressource verwenden, um aus einer anderen Vorlage auf diese Vorlage zu verweisen. Weitere Hinweise zu verschachtelten Stacks finden Sie unter [Aufteilung einer Vorlage in wiederverwendbare Teile mit verschachtelten Stapeln](using-cfn-nested-stacks.md).

CloudFormation unterstützt nur eine Verschachtelungsebene. `resource import` Dies bedeutet, dass Sie keinen Stack in einen untergeordneten Stack importieren oder einen Stack importieren können, der untergeordnete Stacks enthält.

Wenn Sie mit dem Importieren noch nicht vertraut sind, empfehlen wir Ihnen, zunächst die einführenden Informationen im Thema [Manuelles Importieren von AWS Ressourcen in einen CloudFormation Stack](import-resources-manually.md) durchzulesen.

## Validierung des Imports von verschachtelten Stacks
<a name="resource-import-nested-stacks-validation"></a>

 CloudFormation Führt während eines Importvorgangs für verschachtelte Stacks die folgenden Validierungen durch.
+ Die verschachtelte `AWS::CloudFormation::Stack`-Definition in der übergeordneten Stack-Vorlage entspricht der tatsächlichen geschachtelten Stack-Vorlage.
+ Die Tags für die verschachtelte `AWS::CloudFormation::Stack`-Definition in der übergeordneten Stack-Vorlage entsprechen den Tags für die tatsächliche verschachtelte Stack-Ressource.

## Verschachteln Sie einen vorhandenen Stack mit dem AWS-Managementkonsole
<a name="resource-import-nested-stacks-console"></a>

1. Fügen Sie die `AWS::CloudFormation::Stack` Ressource mit einem zur übergeordneten Stack-Vorlage hinzu `Retain` [DeletionPolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-attribute-deletionpolicy.html). Im folgenden Beispiel ist die übergeordnete Stapelvorlage `MyNestedStack` das Ziel des Imports.

   **JSON**

   ```
   {
     "AWSTemplateFormatVersion" : "2010-09-09",
     "Resources" : {
       "ServiceTable":{
              "Type":"AWS::DynamoDB::Table",
              "Properties":{
                 "TableName":"Service",
                 "AttributeDefinitions":[
                    {
                       "AttributeName":"key",
                       "AttributeType":"S"
                    }
                 ],
                 "KeySchema":[
                    {
                       "AttributeName":"key",
                       "KeyType":"HASH"
                    }
                 ],
                 "ProvisionedThroughput":{
                    "ReadCapacityUnits":5,
                    "WriteCapacityUnits":1
                 }
              }
           },
       "MyNestedStack" : {
         "Type" : "AWS::CloudFormation::Stack",
         "DeletionPolicy": "Retain",
         "Properties" : {
         "TemplateURL" : "https://s3.amazonaws.com/cloudformation-templates-us-east-2/EC2ChooseAMI.template",
           "Parameters" : {
             "InstanceType" : "t1.micro",
             "KeyName" : "mykey"
           }
         }
       }
     }
   }
   ```

   **YAML**

   ```
   AWSTemplateFormatVersion: 2010-09-09
   Resources:
     ServiceTable:
       Type: AWS::DynamoDB::Table
       Properties:
         TableName: Service
         AttributeDefinitions:
           - AttributeName: key
             AttributeType: S
         KeySchema:
           - AttributeName: key
             KeyType: HASH
         ProvisionedThroughput:
           ReadCapacityUnits: 5
           WriteCapacityUnits: 1
     MyNestedStack:
       Type: AWS::CloudFormation::Stack
       DeletionPolicy: Retain
       Properties:
         TemplateURL: >-
           https://s3.amazonaws.com/cloudformation-templates-us-east-2/EC2ChooseAMI.template
         Parameters:
           InstanceType: t1.micro
           KeyName: mykey
   ```

1. Öffnen Sie die CloudFormation Konsole.

1. Wählen Sie auf der Seite **Stacks** mit ausgewähltem übergeordneten Stack **Stack-Aktionen** und dann **Ressourcen in Stack importieren** aus.  
![\[Die Option „Ressourcen in Stack importieren“ in der Konsole.\]](http://docs.aws.amazon.com/de_de/AWSCloudFormation/latest/UserGuide/images/stack-actions-import.png)

1. Auf der Seite **Importübersicht** finden Sie eine Liste der Dinge, die Sie während dieses Vorgangs angeben müssen. Wählen Sie anschließend **Weiter**.

1. Geben Sie auf der Seite **Vorlage angeben** die aktualisierte übergeordnete Vorlage mit einer der folgenden Methoden an und wählen Sie dann **Weiter** aus.
   + Wählen Sie **Amazon S3-URL** aus und geben Sie dann die URL für Ihre Vorlage im Textfeld an.
   + Wählen Sie **Vorlagendatei hochladen** aus und suchen Sie dann nach Ihrer Vorlage.

1. Identifizieren Sie auf der Seite **Ressourcen identifizieren** die `AWS::CloudFormation::Stack`-Ressource.

   1. Wählen Sie unter **Bezeichnereigenschaft** den Typ des Ressourcenbezeichners aus. Beispielsweise kann eine `AWS::CloudFormation::Stack`-Ressource mit der `StackId`-Eigenschaft identifiziert werden.

   1. Geben Sie unter **Identifikatorwert**den ARN des Stapels ein, den Sie importieren. Beispiel, `arn:aws:cloudformation:us-west-2:12345678910:stack/mystack/5b918d10-cd98-11ea-90d5-0a9cd3354c10`.  
![\[Die Seite „Ressourcen identifizieren“ in der Konsole.\]](http://docs.aws.amazon.com/de_de/AWSCloudFormation/latest/UserGuide/images/resource-import-stackid.png)

   1. Wählen Sie **Weiter** aus.

1. Ändern Sie auf der Seite **Stack-Details angeben** alle Parameter und wählen Sie dann **Weiter** aus. Dadurch wird automatisch ein Änderungssatz erstellt.
**Wichtig**  
Der Importvorgang schlägt fehl, wenn Sie vorhandene Parameter ändern, die einen Erstellungs-, Aktualisierungs- oder Löschvorgang initiieren.

1. Vergewissern Sie sich auf der *MyParentStack* Seite **Überprüfen**, dass die richtige Ressource importiert wurde, und wählen Sie dann **Ressourcen importieren** aus. Dadurch wird der im letzten Schritt erstellte Änderungssatz automatisch ausgeführt. Alle Tags auf Stack-Ebene werden zu diesem Zeitpunkt auf importierte Ressourcen angewendet.

1. Der Bereich **Ereignisse** der Seite **Stack-Details** für Ihren übergeordneten Stack wird angezeigt.  
![\[Die Registerkarte „Ereignisse“ in der Konsole.\]](http://docs.aws.amazon.com/de_de/AWSCloudFormation/latest/UserGuide/images/import-events.png)
**Anmerkung**  
Es ist nicht erforderlich, die Abweichungserkennung für den übergeordneten Stack nach diesem Importvorgang auszuführen, da die `AWS::CloudFormation::Stack`-Ressource bereits von CloudFormation verwaltet wurde.

## Verschachteln Sie einen vorhandenen Stapel mithilfe der AWS CLI
<a name="resource-import-nested-stacks-cli"></a>

1. Fügen Sie die `AWS::CloudFormation::Stack` Ressource mit einem zur übergeordneten Stack-Vorlage hinzu `Retain` [DeletionPolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-attribute-deletionpolicy.html). Im folgenden Beispiel einer übergeordneten Vorlage ist `MyNestedStack` das Ziel des Imports.

   **JSON**

   ```
   {
     "AWSTemplateFormatVersion" : "2010-09-09",
     "Resources" : {
       "ServiceTable":{
              "Type":"AWS::DynamoDB::Table",
              "Properties":{
                 "TableName":"Service",
                 "AttributeDefinitions":[
                    {
                       "AttributeName":"key",
                       "AttributeType":"S"
                    }
                 ],
                 "KeySchema":[
                    {
                       "AttributeName":"key",
                       "KeyType":"HASH"
                    }
                 ],
                 "ProvisionedThroughput":{
                    "ReadCapacityUnits":5,
                    "WriteCapacityUnits":1
                 }
              }
           },
       "MyNestedStack" : {
         "Type" : "AWS::CloudFormation::Stack",
         "DeletionPolicy": "Retain",
         "Properties" : {
         "TemplateURL" : "https://s3.amazonaws.com/cloudformation-templates-us-east-2/EC2ChooseAMI.template",
           "Parameters" : {
             "InstanceType" : "t1.micro",
             "KeyName" : "mykey"
           }
         }
       }
     }
   }
   ```

   **YAML**

   ```
   AWSTemplateFormatVersion: 2010-09-09
   Resources:
     ServiceTable:
       Type: AWS::DynamoDB::Table
       Properties:
         TableName: Service
         AttributeDefinitions:
           - AttributeName: key
             AttributeType: S
         KeySchema:
           - AttributeName: key
             KeyType: HASH
         ProvisionedThroughput:
           ReadCapacityUnits: 5
           WriteCapacityUnits: 1
     MyNestedStack:
       Type: AWS::CloudFormation::Stack
       DeletionPolicy: Retain
       Properties:
         TemplateURL: >-
           https://s3.amazonaws.com/cloudformation-templates-us-east-2/EC2ChooseAMI.template
         Parameters:
           InstanceType: t1.micro
           KeyName: mykey
   ```

1. Stellen Sie eine JSON-Zeichenkette wie im folgenden Beispiel zusammen, mit diesen Änderungen: 
   + *MyNestedStack*Ersetzen Sie durch die logische ID der Zielressource, wie in der Vorlage angegeben.
   + *arn:aws:cloudformation:us-west-2:12345678910:stack/mystack/5b918d10-cd98-11ea-90d5-0a9cd3354c10*Ersetzen Sie es durch den ARN des Stacks, den Sie importieren möchten.

   ```
   [{"ResourceType":"AWS::CloudFormation::Stack","LogicalResourceId":"MyNestedStack","ResourceIdentifier":{"StackId":"arn:aws:cloudformation:us-east-2:123456789012:stack/mystack/5b918d10-cd98-11ea-90d5-0a9cd3354c10"}}]
   ```

   Alternativ können Sie die Parameter auch in einer Konfigurationsdatei angeben. 

   Um beispielsweise zu importieren`MyNestedStack`, könnten Sie eine *ResourcesToImport.txt* Datei erstellen, die die folgende Konfiguration enthält.

   **JSON**

   ```
   [
     {
         "ResourceType":"AWS::CloudFormation::Stack",
         "LogicalResourceId":"MyNestedStack",
         "ResourceIdentifier": {
           "StackId":"arn:aws:cloudformation:us-west-2:12345678910:stack/mystack/5b918d10-cd98-11ea-90d5-0a9cd3354c10"
         }
     }
   ]
   ```

   **YAML**

   ```
   ResourceType: AWS::CloudFormation::Stack
     LogicalResourceId: MyNestedStack
     ResourceIdentifier:
       StackId: >-
         arn:aws:cloudformation:us-west-2:12345678910:stack/mystack/5b918d10-cd98-11ea-90d5-0a9cd3354c10
   ```

1. Um einen Änderungssatz zu erstellen, verwenden Sie den folgenden Befehl **create-change-set** und ersetzen den Platzhaltertext. Geben Sie für die Option `--change-set-type` einen Wert von **IMPORT** an. Ersetzen Sie bei der Option `--resources-to-import` die Beispiel-JSON-Zeichenfolge durch die tatsächliche JSON-Zeichenfolge, die Sie gerade erstellt haben.

   ```
   aws cloudformation create-change-set \
       --stack-name MyParentStack --change-set-name ImportChangeSet \
       --change-set-type IMPORT \
       --template-body file://TemplateToImport.json \
       --resources-to-import '[{"ResourceType":"AWS::CloudFormation::Stack","LogicalResourceId":"MyNestedStack","ResourceIdentifier":{"StackId":"arn:aws:cloudformation:us-west-2:12345678910:stack/mystack/5b918d10-cd98-11ea-90d5-0a9cd3354c10"}}]'
   ```
**Anmerkung**  
`--resources-to-import` unterstützt kein Inline-YAML. Die Anforderungen für das Escapen von Anführungszeichen in der JSON-Zeichenfolge variieren je nach Ihrem Terminal. Weitere Informationen finden Sie unter [Anführungszeichen in Zeichenketten verwenden](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-parameters-quoting-strings.html#cli-usage-parameters-quoting-strings-containing) im *AWS Command Line Interface -Benutzerhandbuch*.

   Alternativ können Sie auch eine Datei-URL als Eingabe für die Option `--resources-to-import` verwenden, wie im folgenden Beispiel gezeigt.

   ```
   --resources-to-import file://ResourcesToImport.txt
   ```

   Wenn dieser Befehl erfolgreich ist, erhalten Sie die folgende Beispielausgabe.

   ```
   {
       "Id": "arn:aws:cloudformation:us-west-2:12345678910:changeSet/ImportChangeSet/8ad75b3f-665f-46f6-a200-0b4727a9442e",
       "StackId": "arn:aws:cloudformation:us-west-2:12345678910:stack/MyParentStack/4e345b70-1281-11ef-b027-027366d8e82b"
   }
   ```

1. Überprüfen Sie den Änderungssatz, um sicherzustellen, dass der richtige Stack importiert wird.

   ```
   aws cloudformation describe-change-set --change-set-name ImportChangeSet
   ```

1. Um den Änderungssatz zu initiieren und den Stack in den übergeordneten QuellStack zu importieren, verwenden Sie den folgenden **execute-change-set**-Befehl und ersetzen den Platzhaltertext. Alle [Tags auf Stack-Ebene](cfn-console-create-stack.md#configure-stack-options) werden zu diesem Zeitpunkt auf importierte Ressourcen angewendet. Nach erfolgreichem Abschluss des Importvorgangs `(IMPORT_COMPLETE)` ist der Stack erfolgreich verschachtelt.

   ```
   aws cloudformation execute-change-set --change-set-name ImportChangeSet
   ```
**Anmerkung**  
Es ist nicht erforderlich, die Abweichungserkennung für den übergeordneten Stack nach diesem Importvorgang auszuführen, da die `AWS::CloudFormation::Stack`-Ressource bereits von CloudFormation verwaltet wird.