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.
Teilen Sie eine Vorlage mithilfe verschachtelter Stapel in wiederverwendbare Teile auf
Wenn Ihre Infrastruktur wächst, müssen Sie möglicherweise wiederholt identische Ressourcenkonfigurationen für mehrere Vorlagen erstellen. Um diese Redundanz zu vermeiden, können Sie diese allgemeinen Konfigurationen in spezielle Vorlagen unterteilen. Anschließend können Sie die AWS::CloudFormation::StackRessource in anderen Vorlagen verwenden, um auf diese speziellen Vorlagen zu verweisen und verschachtelte Stapel zu erstellen.
Nehmen wir beispielsweise 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 in anderen Vorlagen, die dieselbe Load Balancer-Konfiguration erfordern, auf diese Vorlage verweisen.
Verschachtelte Stapel können selbst andere verschachtelte Stapel enthalten, was zu einer Hierarchie von Stapeln führt, wie in der folgenden Abbildung dargestellt. Der Root-Stack ist der Stack der obersten Ebene, zu dem letztendlich alle verschachtelten Stacks gehören. Jeder verschachtelte Stapel hat einen unmittelbaren übergeordneten Stapel. Bei der ersten Ebene verschachtelter Stacks ist der Root-Stack auch der übergeordnete Stack.
-
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.

Themen
Beispiel für das Teilen einer Vorlage vor und nach dem Aufteilen
Dieses Beispiel zeigt, wie Sie eine einzelne, große CloudFormation Vorlage mithilfe verschachtelter Vorlagen in ein strukturierteres und wiederverwendbares Design umorganisieren können. Anfänglich zeigt die Vorlage „Before Nesting Stacks“ alle in einer Datei definierten Ressourcen. Dies kann unübersichtlich und schwer zu verwalten werden, wenn die Anzahl der Ressourcen zunimmt. Die Vorlage „After Nesting Stacks“ teilt die Ressourcen in kleinere, separate Vorlagen auf. Jeder verschachtelte Stapel verwaltet einen bestimmten Satz verwandter Ressourcen, wodurch die Gesamtstruktur übersichtlicher und einfacher zu verwalten ist.
Vor dem Verschachteln von Stapeln |
Nach dem Verschachteln von Stapeln |
---|---|
|
|
Beispiel für eine verschachtelte Stack-Architektur
In diesem Abschnitt wird eine verschachtelte Stack-Architektur demonstriert, die aus einem Stack der obersten Ebene besteht, der auf einen verschachtelten Stack verweist. Der verschachtelte Stack stellt eine Lambda-Funktion von Node.js bereit, empfängt einen Parameterwert vom Stack der obersten Ebene und gibt eine Ausgabe zurück, die über den Stack der obersten Ebene verfügbar gemacht wird.
Themen
Schritt 1: Erstellen Sie eine Vorlage für den verschachtelten Stack auf Ihrem lokalen System
Das folgende Beispiel zeigt das Format der Vorlage für verschachtelte Stacks.
YAML
AWSTemplateFormatVersion: 2010-09-09 Description: Nested stack template for Lambda function deployment Parameters: MemorySize: Type: Number Default: 128 MinValue: 128 MaxValue: 10240 Description: Lambda function memory allocation (128-10240 MB) Resources: LambdaFunction: Type: AWS::Lambda::Function Properties: FunctionName: !Sub "${AWS::StackName}-Function" Runtime: nodejs18.x Handler: index.handler Role: !GetAtt LambdaExecutionRole.Arn Code: ZipFile: | exports.handler = async (event) => { return { statusCode: 200, body: JSON.stringify('Hello from Lambda!') }; }; MemorySize: !Ref MemorySize LambdaExecutionRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: lambda.amazonaws.com Action: sts:AssumeRole ManagedPolicyArns: - 'arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole' Outputs: LambdaArn: Description: ARN of the created Lambda function Value: !GetAtt LambdaFunction.Arn
Schritt 2: Erstellen Sie eine Vorlage für den Top-Level-Stack auf Ihrem lokalen System
Das folgende Beispiel zeigt das Format der Vorlage für den obersten Stack und die AWS::CloudFormation::StackRessource, die auf den Stack verweist, den Sie im vorherigen Schritt erstellt haben.
YAML
AWSTemplateFormatVersion: 2010-09-09 Description: Top-level stack template that deploys a nested stack Resources: NestedStack: Type: AWS::CloudFormation::Stack Properties: TemplateURL: /path_to_template/nested-template.yaml Parameters: MemorySize: 256 Outputs: NestedStackLambdaArn: Description: ARN of the Lambda function from nested stack Value: !GetAtt NestedStack.Outputs.LambdaArn
Schritt 3: Verpacken und Bereitstellen der Vorlagen
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 auf Amazon S3 (einschließlichTemplateURL
) und generiert 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.
Als Nächstes können Sie den packageBefehl verwenden, um die verschachtelte Vorlage in einen Amazon S3 S3-Bucket hochzuladen.
aws cloudformation package \ --s3-bucket
amzn-s3-demo-bucket
\ --template/path_to_template/top-level-template.yaml
\ --output-template-filepackaged-template.yaml
\ --output json
Der Befehl generiert eine neue Vorlage in dem von --output-template-file
angegebenen Pfad. Es ersetzt die TemplateURL
Referenz durch den Amazon S3 S3-Standort, 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 package Befehl ausgeführt haben, können Sie die verarbeitete Vorlage mithilfe des deployBefehls bereitstellen. Bei verschachtelten Stacks, die IAM-Ressourcen enthalten, müssen Sie die IAM-Funktionen bestätigen, indem Sie die Option angeben. --capabilities
aws cloudformation deploy \ --template-file
packaged-template.yaml
\ --stack-namestack-name
\ --capabilities CAPABILITY_NAMED_IAM
Ausführen von Stack-Operationen auf verschachtelten Stacks
Wenn Sie mit verschachtelten Stacks arbeiten, müssen Sie diese während des Betriebs sorgfältig behandeln. Bestimmte Stack-Operationen, wie z. B. Stack-Updates, sollten vom Root-Stack aus initiiert und nicht direkt auf den verschachtelten Stacks ausgeführt werden. Wenn Sie einen Root-Stack aktualisieren, werden nur verschachtelte Stacks mit Vorlagenänderungen aktualisiert.
Darüber hinaus kann das Vorhandensein der verschachtelten Stacks die Operationen auf dem Root-Stack beeinflussen. Wenn beispielsweise ein verschachtelter Stack im UPDATE_ROLLBACK_IN_PROGRESS
Status stecken bleibt, wartet der Root-Stack, bis dieser verschachtelte Stack sein Rollback abgeschlossen hat, bevor er fortfährt. Bevor Sie mit den Aktualisierungsvorgängen fortfahren, stellen Sie sicher, dass Sie über IAM-Berechtigungen verfügen, um ein Stack-Update abzubrechen, falls es zurückgesetzt wird. Weitere Informationen finden Sie unter Steuern CloudFormation Sie den Zugriff mit AWS Identity and Access Management.
Gehen Sie wie folgt vor, um den Root-Stack und die verschachtelten Stacks zu finden.
So zeigen Sie den Root-Stack eines verschachtelten Stacks an
-
Wählen Sie auf der Seite Stacks den Namen des verschachtelten Stacks aus, dessen Root-Stack Sie anzeigen möchten.
Bei verschachtelten Stacks wird NESTED über ihrem Stacknamen angezeigt.
-
Wählen Sie auf der Registerkarte Stack-Info im Abschnitt Übersicht den Stack-Namen aus, der als Root-Stack aufgeführt ist.
So zeigen Sie die verschachtelten Stacks eines Root-Stacks an
-
Wählen Sie aus dem Root-Stack, dessen verschachtelte Stapel Sie anzeigen möchten, den Tab Ressourcen aus.
-
Suchen Sie in der Spalte Typ nach Ressourcen des Typs. AWS::CloudFormation::Stack