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
Verwenden Sie die resource import
-Funktion, 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 Betten Sie Stapel mithilfe verschachtelter Stapel in andere Stapel ein.
AWS 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 Importieren Sie AWS Ressourcen mit einem Ressourcenimport in einen CloudFormation Stack Thema zu lesen.
Validierung des Imports von verschachtelten Stacks
AWS 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 eines vorhandenen Stacks mithilfe der AWS Management Console
-
Fügen Sie die
AWS::CloudFormation::Stack
Ressource mit einem zur übergeordneten Stack-Vorlage hinzuRetain
DeletionPolicy. Im folgenden BeispielMyNestedStack
ist die Vorlage für den übergeordneten Stapel 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
-
Öffnen Sie die AWS CloudFormation Konsole.
-
Wählen Sie auf der Seite Stacks mit ausgewähltem übergeordneten Stack Stack-Aktionen und dann Ressourcen in Stack importieren aus.
-
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.
-
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.
-
-
Identifizieren Sie auf der Seite Ressourcen identifizieren die
AWS::CloudFormation::Stack
-Ressource.-
Wählen Sie unter Bezeichnereigenschaft den Typ des Ressourcenbezeichners aus. Beispielsweise kann eine
AWS::CloudFormation::Stack
-Ressource mit derStackId
-Eigenschaft identifiziert werden. -
Geben Sie unter Identifier-Wert den ARN des Stacks ein, den Sie importieren. Beispiel,
.arn:aws:cloudformation:us-west-2:12345678910:stack/mystack/5b918d10-cd98-11ea-90d5-0a9cd3354c10
-
Wählen Sie Weiter.
-
-
Ä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.
-
Vergewissern Sie sich auf der
MyParentStack
Seite „Überprüfen“, dass die richtige Ressource importiert wird, 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. -
Der Bereich Ereignisse der Seite Stack-Details für Ihren übergeordneten Stack wird angezeigt.
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 AWS CloudFormation verwaltet wurde.
Verschachteln eines vorhandenen Stacks mithilfe der AWS CLI
-
Fügen Sie die
AWS::CloudFormation::Stack
Ressource mit einem zur übergeordneten Stack-Vorlage hinzuRetain
DeletionPolicy. Im folgenden Beispiel einer übergeordneten Vorlage istMyNestedStack
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
-
Verfassen Sie eine JSON-Zeichenfolge, wie im folgenden Beispiel gezeigt, 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 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 in einer Konfigurationsdatei angeben.
Um beispielsweise zu importieren
MyNestedStack
, können Sie eineResourcesToImport.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
-
-
Um einen Änderungssatz zu erstellen, verwenden Sie den folgenden create-change-set Befehl und ersetzen Sie den Platzhaltertext. Geben Sie für die Option
--change-set-type
einen Wert vonIMPORT
an. Ersetzen Sie für--resources-to-import
diese Option die JSON-Beispielzeichenfolge durch die tatsächliche JSON-Zeichenfolge, die Sie gerade erstellt haben.aws cloudformation create-change-set \ --stack-name
MyParentStack
--change-set-nameImportChangeSet
\ --change-set-typeIMPORT
\ --template-bodyfile://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 Inline-YAML nicht. Die Anforderungen für das Umgehen von Anführungszeichen in der JSON-Zeichenfolge variieren je nach Terminal. Weitere Informationen finden Sie im Benutzerhandbuch unter Verwenden von Anführungszeichen innerhalb von Zeichenketten.AWS Command Line InterfaceAlternativ können Sie eine Datei-URL als Eingabe für die
--resources-to-import
Option verwenden, wie im folgenden Beispiel gezeigt.--resources-to-import
file://ResourcesToImport.txt
Bei Erfolg gibt dieser Befehl die folgende Beispielausgabe zurück.
{ "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" }
-
Überprüfen Sie den Änderungssatz, um sicherzustellen, dass der richtige Stack importiert wird.
aws cloudformation describe-change-set --change-set-name
ImportChangeSet
-
Verwenden Sie den folgenden execute-change-set Befehl und ersetzen Sie den Platzhaltertext, um den Änderungssatz zu initiieren und den Stapel in den übergeordneten Quellstapel zu importieren. Alle Tags auf Stack-Ebene 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 AWS CloudFormation verwaltet wird.