Dies ist der AWS CDK v2-Entwicklerhandbuch. Das ältere CDK v1 wurde am 1. Juni 2022 in die Wartung aufgenommen 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.
Bevor Sie einen AWS Cloud Development Kit (AWS CDK) Stack bereitstellen können, muss er zunächst synthetisiert werden. Die Stack-Synthese ist der Prozess der Erstellung einer AWS CloudFormation Vorlage und von Deployment-Artefakten aus einem CDK-Stack. Die Vorlage und die Artefakte werden als Cloud-Assembly bezeichnet. Die Cloud-Assembly wird bereitgestellt, um Ihre Ressourcen bereitzustellen AWS. Weitere Informationen zur Funktionsweise von Bereitstellungen finden Sie unterWie funktionieren AWS CDK Bereitstellungen.
Wie Synthese und Bootstrapping zusammenarbeiten
Damit Ihre CDK-Apps ordnungsgemäß bereitgestellt werden können, müssen die während der Synthese erstellten CloudFormation Vorlagen die beim Bootstrapping erstellten Ressourcen korrekt spezifizieren. Daher müssen sich Bootstrapping und Synthese gegenseitig ergänzen, damit eine Bereitstellung erfolgreich ist:
-
Bootstrapping ist ein einmaliger Vorgang, bei dem eine Umgebung für Bereitstellungen eingerichtet wird. AWS AWS CDK Es konfiguriert bestimmte AWS Ressourcen in Ihrer Umgebung, die vom CDK für Bereitstellungen verwendet werden. Diese werden üblicherweise als Bootstrap-Ressourcen bezeichnet. Anweisungen zum Bootstrapping finden Sie unter. Bootstrap Ihre Umgebung für die Verwendung mit dem AWS CDK
-
CloudFormation Die während der Synthese erstellten Vorlagen enthalten Informationen darüber, welche Bootstrap-Ressourcen verwendet werden sollen. Während der Synthese wird das CDK CLI weiß nicht genau, wie Ihre AWS Umgebung gebootet wurde. Stattdessen das CDK CLI erstellt CloudFormation Vorlagen, die auf dem Synthesizer basieren, den Sie für jeden CDK-Stack konfigurieren. Damit eine Bereitstellung erfolgreich ist, muss der Synthesizer CloudFormation Vorlagen erstellen, die auf die richtigen zu verwendenden Bootstrap-Ressourcen verweisen.
Das CDK verfügt über eine Standardkonfiguration für Synthesizer und Bootstrapping, die so konzipiert sind, dass sie zusammenarbeiten. Wenn Sie eine anpassen, müssen Sie die entsprechenden Anpassungen auf die andere anwenden.
Wie konfiguriert man die CDK-Stack-Synthese
Sie konfigurieren die CDK-Stack-Synthese mithilfe der synthesizer
Eigenschaft Ihrer Stack
Instanz. Diese Eigenschaft gibt an, wie Ihre CDK-Stacks synthetisiert werden. Sie stellen eine Instanz einer Klasse bereit, die oder implementiert. IStackSynthesizer
IReusableStackSynthesizer
Ihre Methoden werden jedes Mal aufgerufen, wenn ein Asset zum Stack hinzugefügt wird oder wenn der Stack synthetisiert wird. Im Folgenden finden Sie ein grundlegendes Beispiel für die Verwendung dieser Eigenschaft in Ihrem Stack:
new MyStack(this, 'MyStack', {
// stack properties
synthesizer: new DefaultStackSynthesizer({
// synthesizer properties
}),
});
Sie können auch einen Synthesizer für alle CDK-Stacks in Ihrer CDK-App konfigurieren, indem Sie die defaultStackSynthesizer
Eigenschaft Ihrer Instanz verwenden: App
import { App, Stack, DefaultStackSynthesizer } from 'aws-cdk-lib';
const app = new App({
// Configure for all stacks in this app
defaultStackSynthesizer: new DefaultStackSynthesizer({
/* ... */
}),
});
Standardmäßig verwendet der. AWS CDK DefaultStackSynthesizer
Wenn Sie keinen Synthesizer konfigurieren, wird dieser Synthesizer verwendet.
Wenn Sie das Bootstrapping nicht ändern, z. B. Änderungen am Bootstrap-Stack oder der Vorlage vornehmen, müssen Sie die Stack-Synthese nicht ändern. Sie müssen nicht einmal einen Synthesizer bereitstellen. Das CDK verwendet die DefaultStackSynthesizer
Standardklasse, um die CDK-Stack-Synthese so zu konfigurieren, dass sie ordnungsgemäß mit Ihrem Bootstrap-Stack interagiert.
Wie synthetisiert man einen CDK-Stack
Um einen CDK-Stack zu synthetisieren, verwenden Sie die AWS CDK Befehlszeilenschnittstelle (AWS CDK CLI) cdk synth
-Befehl. Weitere Informationen zu diesem Befehl, einschließlich Optionen, die Sie mit diesem Befehl verwenden können, finden Sie untercdk synthesize.
Wenn Ihre CDK-App einen einzelnen Stack enthält oder um alle Stapel zu synthetisieren, müssen Sie den CDK-Stacknamen nicht als Argument angeben. Standardmäßig ist das CDK CLI synthetisiert Ihre CDK-Stacks zu Vorlagen. AWS CloudFormation
Eine json
formatierte Vorlage für jeden Stapel wird im Verzeichnis gespeichert. cdk.out
Wenn Ihre App einen einzelnen Stapel enthält, wird eine yaml
formatierte Vorlage gedruckt. stdout
Im Folgenden wird ein Beispiel gezeigt:
$
cdk synth
Resources: CDKMetadata: Type: AWS::CDK::Metadata Properties: Analytics: v2:deflate64:H4sIAAAAAAAA/unique-identifier
Metadata: aws:cdk:path: CdkAppStack/CDKMetadata/Default Condition: CDKMetadataAvailable...
Wenn Ihre CDK-App mehrere Stapel enthält, können Sie die logische ID eines Stacks angeben, um einen einzelnen Stapel zu synthetisieren. Im Folgenden wird ein Beispiel gezeigt:
$
cdk synth
MyStackName
Wenn Sie keinen Stack synthetisieren und ausführen, das CDK cdk deploy
CLI synthetisiert Ihren Stack vor der Bereitstellung automatisch.
Wie die Synthese standardmäßig funktioniert
Logisch IDs in Ihrer AWS CloudFormation Vorlage generiert
Wenn Sie einen CDK-Stack synthetisieren, um eine CloudFormation Vorlage zu erstellen, IDs werden logische Daten aus den folgenden Quellen generiert, formatiert als: <construct-path><construct-ID><unique-hash>
-
Konstruierter Pfad — Der gesamte Pfad zum Konstrukt in Ihrer CDK-App. Dieser Pfad schließt die ID des L1-Konstrukts, das immer
Resource
oder istDefault
, und die ID des Stacks der obersten Ebene aus, zu dem es gehört. -
Konstrukt-ID — Die ID, die Sie bei der Instanziierung Ihres Konstrukts als zweites Argument angeben.
-
Eindeutiger Hash — Der AWS CDK generiert einen eindeutigen Hash mit 8 Zeichen unter Verwendung eines deterministischen Hash-Algorithmus. Dieser eindeutige Hash trägt dazu bei, dass die logischen ID-Werte in Ihrer Vorlage voneinander eindeutig sind. Das deterministische Verhalten dieser Hash-Generierung stellt sicher, dass der generierte logische ID-Wert für jedes Konstrukt bei jeder Synthese derselbe bleibt. Der Hashwert ändert sich nur, wenn Sie bestimmte Konstruktwerte wie die ID oder den Pfad Ihres Konstrukts ändern.
Logical IDs haben eine maximale Länge von 255 Zeichen. Daher AWS CDK werden der Konstruktpfad und die Konstrukt-ID bei Bedarf gekürzt, um die Obergrenze einzuhalten.
Das Folgende ist ein Beispiel für ein Konstrukt, das einen Amazon Simple Storage Service (Amazon S3) -Bucket definiert. Hier übergeben wir myBucket
als ID für unser Konstrukt:
import * as cdk from 'aws-cdk-lib';
import { Construct} from 'constructs';
import * as s3 from 'aws-cdk-lib/aws-s3';
export class MyCdkAppStack extends cdk.Stack {
constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
// Define the S3 bucket
new s3.Bucket(this, 'myBucket', {
versioned: true,
removalPolicy: cdk.RemovalPolicy.DESTROY,
});
}
}
Wenn wir ausführencdk synth
, myBucket
wird eine logische ID im Format von generiert. Das Folgende ist ein Beispiel für diese Ressource in der generierten AWS CloudFormation Vorlage:unique-hash
Resources:
myBucket5AF9C99B:
Type: AWS::S3::Bucket
Properties:
VersioningConfiguration:
Status: Enabled
UpdateReplacePolicy: Delete
DeletionPolicy: Delete
Metadata:
aws:cdk:path: S3BucketAppStack/myBucket/Resource
Im Folgenden finden Sie ein Beispiel für ein benutzerdefiniertes Konstrukt mit dem NamenBar
, das einen Amazon S3 S3-Bucket definiert. Das Bar
Konstrukt enthält das benutzerdefinierte Konstrukt Foo
in seinem Pfad:
import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
import * as s3 from 'aws-cdk-lib/aws-s3';
// Define the Bar construct
export class Bar extends Construct {
constructor(scope: Construct, id: string) {
super(scope, id);
// Define an S3 bucket inside of Bar
new s3.Bucket(this, 'Bucket', {
versioned: true,
removalPolicy: cdk.RemovalPolicy.DESTROY,
} );
}
}
// Define the Foo construct
export class Foo extends Construct {
constructor(scope: Construct, id: string) {
super(scope, id);
// Create an instance of Bar inside Foo
new Bar(this, 'Bar');
}
}
// Define the CDK stack
export class MyCustomAppStack extends cdk.Stack {
constructor(scope: Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
// Instantiate Foo construct in the stack
new Foo(this, 'Foo');
}
}
Wenn wir ausführencdk synth
, FooBarBucket
wird eine logische ID im Format von generiert. Das Folgende ist ein Beispiel für diese Ressource in der generierten AWS CloudFormation Vorlage:unique-hash
Resources:
FooBarBucketBA3ED1FA:
Type: AWS::S3::Bucket
Properties:
VersioningConfiguration:
Status: Enabled
UpdateReplacePolicy: Delete
DeletionPolicy: Delete
# ...
Passen Sie die CDK-Stack-Synthese an
Wenn das standardmäßige CDK-Syntheseverhalten nicht Ihren Anforderungen entspricht, können Sie die CDK-Synthese anpassen. Dazu modifizieren SieDefaultStackSynthesizer
, verwenden andere verfügbare integrierte Synthesizer oder erstellen Ihren eigenen Synthesizer. Detaillierte Anweisungen finden Sie unter Passen Sie die CDK-Stack-Synthese an.