Programmgesteuerte Aktionen des CDK Toolkit konfigurieren - AWS Cloud Development Kit (AWS CDK) v2

Dies ist der AWS CDK v2-Entwicklerhandbuch. Das ältere CDK v1 wurde am 1. Juni 2022 gewartet und der Support wurde am 1. Juni 2023 eingestellt.

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.

Programmgesteuerte Aktionen des CDK Toolkit konfigurieren

Die AWS CDK Toolkit Library bietet programmatische Schnittstellen für Aktionen im Lebenszyklus von Anwendungen wie Synthese, Bereitstellung und Stack-Management. In diesem Handbuch wird erklärt, wie Sie die einzelnen Aktionen in Ihrem Code verwenden.

Generieren von Cloud-Assemblys mit Synth

Die synth Aktion generiert eine Cloud-Assembly aus Ihrer Cloud-Assembly-Quelle. Weitere Informationen zur Synthese finden Sie unter CDK-Stack-Synthese konfigurieren und durchführen. Eine Cloud-Assembly enthält die folgenden Bereitstellungsartefakte aus Ihrer CDK-App:

  • AWS CloudFormation Vorlagen, die Ihre Infrastruktur definieren.

  • Assets wie Lambda-Funktionscode oder Docker-Images.

  • Metadaten und Konfiguration der Bereitstellung.

So verwenden Sie die synth Aktion, um eine Cloud-Assembly zu erstellen:

// Create a toolkit instance const toolkit = new Toolkit(); // Create a cloud assembly source from a TypeScript app const cloudAssemblySource = await toolkit.fromCdkApp("ts-node app.ts"); // Generate a cloud assembly const cloudAssembly = await toolkit.synth(cloudAssemblySource); // Use the cloud assembly for operations await toolkit.list(cloudAssembly); await toolkit.deploy(cloudAssembly); await toolkit.diff(cloudAssembly); // Query information from the cloud assembly const template = cloudAssembly.getStack("my-stack").template;
Tipp

Die Verwendung einer Cloud-Assembly kann die Leistung optimieren, wenn Sie mehrere Operationen ausführen müssen, da die Synthese nur einmal erfolgt. Weitere Informationen zur Verwaltung von Cloud-Assemblys, einschließlich Zwischenspeicherung und Löschung, finden Sie unter Cloud-Assemblys erstellen und verwalten.

Stack-Informationen mit Liste anzeigen

Die list Aktion ruft Informationen über die Stacks in Ihrer CDK-Anwendung ab, einschließlich ihrer Abhängigkeiten und des aktuellen Status. Verwenden Sie diese Aktion, um Ihre Infrastruktur vor der Bereitstellung zu überprüfen oder Berichte zu erstellen.

import { StackSelectionStrategy } from '@aws-cdk/toolkit-lib'; // Get information about specific stacks const stackDetails = await toolkit.list(cloudAssemblySource, { stacks: { strategy: StackSelectionStrategy.PATTERN_MUST_MATCH, patterns: ["my-stack"], // Only include stacks matching this pattern } }); // Process the returned stack information for (const stack of stackDetails) { console.log(`Stack: ${stack.id}, Dependencies: ${stack.dependencies}`); }

Bereitstellung der Infrastruktur mit Deploy

Die deploy Aktion stellt Ihre Infrastruktur AWS mithilfe der während der Synthese erstellten Cloud-Assembly bereit oder aktualisiert sie. Eine Einführung in die Bereitstellung finden Sie unter Bereitstellen von AWS CDK-Anwendungen. Sie können Bereitstellungsoptionen wie Stack-Auswahl, Parameterwerte und Rollback-Verhalten steuern.

// Deploy stacks with parameter values await toolkit.deploy(cloudAssemblySource, { parameters: StackParameters.exactly({ "MyStack": { "BucketName": "amzn-s3-demo-bucket" } }) });

Die Bereitstellungsaktion unterstützt verschiedene Bereitstellungsmethoden, um verschiedenen Workflows gerecht zu werden. Für die meisten Szenarien, insbesondere in Produktionsumgebungen, empfehlen wir, die Standardbereitstellungsmethode zu verwenden, bei der CloudFormation Änderungssätze verwendet werden. Für Entwicklungsumgebungen, in denen die Iterationsgeschwindigkeit wichtig ist, können Sie alternative Methoden wie Hotswap verwenden.

import { StackSelectionStrategy } from '@aws-cdk/toolkit-lib'; // Deploy using default deployment method (recommended for production) await toolkit.deploy(cloudAssemblySource, { parameters: StackParameters.exactly({ "MyStack": { "BucketName": "amzn-s3-demo-bucket" } }) }); // For development environments only: Deploy with hotswap for faster iterations // Note: We recommend using default deployment methods for production environments await toolkit.deploy(cloudAssemblySource, { deploymentMethod: { method: "hotswap", fallback: true }, // Faster but introduces drift stacks: { strategy: StackSelectionStrategy.PATTERN_MUST_MATCH, patterns: ["dev-stack"] } });

Schonung der bereitgestellten Ressourcen mit Refactor

Wichtig

Die Refactoring-Aktion befindet sich in der Vorschauversion und kann sich ändern.

Durch die refactor Aktion bleiben die bereitgestellten Ressourcen erhalten, wenn Sie CDK-Code umgestalten, z. B. beim Umbenennen von Konstrukten oder beim Verschieben von Konstrukten zwischen Stapeln. Ohne diese Funktion würden diese Änderungen dazu führen, dass Ressourcen ersetzt werden, was möglicherweise CloudFormation zu Betriebsunterbrechungen oder Datenverlust führen könnte.

Die Refactoring-Aktion berechnet automatisch Zuordnungen, indem sie Ihren aktuellen Code mit dem bereitgestellten Status vergleicht. Sie überprüft, ob Ihre CDK-Anwendung genau den gleichen Satz von Ressourcen wie der bereitgestellte Status enthält und sich nur in ihren Positionen im Konstruktbaum unterscheidet. Wenn sie feststellt, dass Ressourcen hinzugefügt, gelöscht oder geändert wurden, wird der Refactoring-Vorgang mit einer Fehlermeldung abgelehnt.

Sobald die Zuordnungen berechnet wurden, verwendet die Refactoring-Aktion die Refactoring-API, um die Logik CloudFormation der Ressourcen zu aktualisieren, ohne sie zu ersetzen. IDs Wenn sie auf mehrdeutige Zuordnungen stößt (bei denen es mehrere mögliche Zuordnungen gibt), können Sie explizite Überschreibungen angeben, um diese Mehrdeutigkeiten zu beheben.

// Perform refactoring operation to preserve resources await toolkit.refactor(cloudAssemblySource); // With optional overrides to resolve ambiguities await toolkit.refactor(cloudAssemblySource, { overrides: { "environments": [ { "account": "123456789012", "region": "us-east-2", "resources": { "StackA.OldName": "StackA.NewName" } } ] } });
Wichtig

Refactoring-Operationen müssen getrennt von anderen Aktionen wie dem Hinzufügen neuer Ressourcen, dem Löschen von Ressourcen oder dem Ändern von Ressourceneigenschaften ausgeführt werden. Wenn Sie solche Änderungen vornehmen müssen, sollten Sie diese Änderungen zunächst separat bereitstellen und dann Ihre Ressourcen mithilfe von Refactoring neu organisieren.

Tipp

Weitere Informationen zum CDK-Refactoring, einschließlich dessen Funktionsweise und Verwendungszweck, finden Sie unter Beibehaltung der bereitgestellten Ressourcen beim Refactoring von CDK-Code.

Fehlgeschlagene Bereitstellungen mit Rollback rückgängig machen

Die rollback Aktion versetzt einen Stack in seinen letzten stabilen Zustand zurück, wenn eine Bereitstellung fehlschlägt und nicht automatisch rückgängig gemacht werden kann. Verwenden Sie diese Aktion, um nach fehlgeschlagenen Bereitstellungen, die ein manuelles Eingreifen erfordern, eine Wiederherstellung durchzuführen.

import { StackSelectionStrategy } from '@aws-cdk/toolkit-lib'; // Roll back stacks to their last stable state await toolkit.rollback(cloudAssemblySource, { orphanFailedResources: false, // When true, removes failed resources from CloudFormation management stacks: { strategy: StackSelectionStrategy.PATTERN_MUST_MATCH, patterns: ["failed-stack"] } });

Änderungen mit Watch überwachen

Die watch Aktion überwacht Ihre CDK-App kontinuierlich auf lokale Dateiänderungen und führt automatisch Bereitstellungen oder Hotswaps durch. Dadurch wird ein Datei-Watcher erstellt, der läuft, bis Ihr Code beendet oder beendet wird.

Warnung

Bei Hotswap-Bereitstellungen werden Ressourcen, sofern möglich, direkt aktualisiert, sodass Aktualisierungen CloudFormation während der Entwicklung schneller durchgeführt werden. Dies ist standardmäßig für den Befehl aktiviert. watch Dies beschleunigt zwar den Entwicklungszyklus, führt aber zu Abweichungen zwischen Ihren CloudFormation Vorlagen und den bereitgestellten Ressourcen. Daher empfehlen wir, Hotswaps nicht in Produktionsumgebungen zu verwenden.

import { StackSelectionStrategy } from '@aws-cdk/toolkit-lib'; // Start watching for changes const watcher = await toolkit.watch(cloudAssemblySource, { include: ["lib/**/*.ts"], // Only watch TypeScript files in the lib directory exclude: ["**/*.test.ts"], // Ignore test files deploymentMethod: { method: "hotswap" }, // This is the default, shown here for clarity stacks: { strategy: StackSelectionStrategy.ALL // Watch all stacks } }); // Later in your code, you can explicitly stop watching: // await watcher.dispose();

Die Überwachungsfunktion gibt ein IWatcher Objekt zurück, mit dem Sie explizit steuern können, wann die Wiedergabe beendet werden soll. Rufen Sie die dispose() Methode für dieses Objekt auf, wenn Sie den Überwachungsvorgang beenden möchten.

Infrastruktur wird mit Destroy entfernt

Die destroy Aktion entfernt CDK-Stacks und die zugehörigen Ressourcen von. AWS Verwenden Sie diese Aktion, um Ressourcen zu bereinigen, wenn sie nicht mehr benötigt werden.

Wichtig

Die Aktion Löschen entfernt Ressourcen dauerhaft, ohne dass eine Bestätigung angefordert wird, im Gegensatz zur CLI-Version dieses Befehls. Stellen Sie sicher, dass Sie Backups aller wichtigen Daten haben, bevor Sie Stapel zerstören.

import { StackSelectionStrategy } from '@aws-cdk/toolkit-lib'; // Remove specific stacks and their resources await toolkit.destroy(cloudAssemblySource, { stacks: { strategy: StackSelectionStrategy.PATTERN_MUST_MATCH, patterns: ["dev-stack"], // Only destroy stacks matching this pattern } });