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.
Konstrukte mit CDK Blueprints konfigurieren
Anmerkung
CDK Blueprints befindet sich in der Vorschauversion und kann sich ändern.
Verwenden Sie AWS CDK Blueprints, um L2-Konstruktkonfigurationen in Ihrem Unternehmen zu standardisieren und zu verteilen. Mit Blueprints können Sie sicherstellen, dass AWS Ressourcen konsistent gemäß Ihren Unternehmensstandards und Best Practices konfiguriert werden. Sie können beispielsweise automatisch die Verschlüsselung für alle Amazon S3 S3-Buckets aktivieren, spezifische Protokollierungskonfigurationen auf alle AWS Lambda-Funktionen anwenden oder Standardsicherheitsregeln für alle Sicherheitsgruppen durchsetzen.
Blueprints basieren auf Property Injection, einem in AWS CDK v2.196.0
Blueprints sind kein Mechanismus zur Durchsetzung von Vorschriften. Entwickler können die Standardeinstellungen bei Bedarf immer noch überschreiben. Für eine strikte Einhaltung der Vorschriften sollten Sie zusätzlich zu Blueprints auch AWS CloudFormation Guard, Service Control Policies oder CDK Aspects verwenden.
Detaillierte Informationen zur Implementierung finden Sie im Property Injection RFC
Hauptkomponenten von Blueprints
Blueprints sind Sammlungen von Eigenschafteninjektoren, die Standardeigenschaften auf Konstrukte anwenden, wenn sie instanziiert werden. Ein Eigenschafteninjektor ist eine Komponente, die die IPropertyInjector
Schnittstelle implementiert, die die Erstellung von Konstrukten abfängt und Eigenschaften ändert oder hinzufügt, bevor das Konstrukt erstellt wird.
-
IPropertyInjector — An
IPropertyInjector
definiert eine Möglichkeit, zusätzliche Eigenschaften einzufügen, die nicht in den Requisiten angegeben sind. Es ist spezifisch für ein L2-Konstrukt und arbeitet mit den Eigenschaften dieses Konstrukts. -
PropertyInjectors-
PropertyInjectors
sind eine Sammlung von Injektoren, die an den Konstruktbaum angehängt sind. Injektoren können an jedes Konstrukt angehängt werden, aber in der Praxis gehen wir davon aus, dass die meisten davon anApp
oder angehängt werden.Stage
Stack
Allgemeine Anwendungsfälle für Blueprints
Sie können CDK Blueprints verwenden, um viele Aspekte Ihrer AWS-Ressourcen zu standardisieren. Hier sind einige gängige Anwendungsfälle:
- Sicherheitsstandards
-
-
Stellen Sie sicher, dass für alle Amazon S3 S3-Buckets die serverseitige Verschlüsselung aktiviert ist.
-
Konfigurieren Sie alle Sicherheitsgruppen so, dass sie den öffentlichen Zugriff standardmäßig blockieren.
-
Wenden Sie AWS Identity and Access Management (IAM) -Berechtigungen mit den geringsten Rechten auf Lambda-Funktionen an. AWS
-
Setzen Sie SSL für die gesamte Netzwerkkommunikation durch.
-
- Operative Exzellenz
-
-
Konfigurieren Sie die standardisierte Protokollierung für alle AWS Lambda-Funktionen.
-
Wenden Sie konsistente Tagging-Strategien für alle Ressourcen an.
-
Richten Sie Standardschwellenwerte für Überwachung und Warnmeldungen ein.
-
Implementieren Sie Standard-Aufbewahrungsrichtlinien für Protokolle und Backups.
-
- Kostenoptimierung
-
-
Konfigurieren Sie je nach Umgebung die entsprechenden Instanzgrößen.
-
Wenden Sie Richtlinien zur auto-scaling mit organisatorischen Standardeinstellungen an.
-
Legen Sie Lebenszyklusregeln für Amazon S3 S3-Buckets fest, um Objekte auf günstigere Speicherklassen umzustellen.
-
Konfigurieren Sie den bereitgestellten Standarddurchsatz für Datenbanken.
-
- Konformitätsanforderungen
-
-
Implementieren Sie die erforderlichen Verschlüsselungseinstellungen für regulierte Daten.
-
Wenden Sie die erforderlichen Backup-Richtlinien für die Datenaufbewahrungsanforderungen an.
-
Konfigurieren Sie die Amazon VPC-Standardeinstellungen, die den Sicherheitsanforderungen entsprechen.
-
Stellen Sie sicher, dass die Ressourcen über die erforderlichen Tags für die Kostenzuweisung verfügen.
-
- Produktivität der Entwickler
-
-
Stellen Sie sinnvolle Standardeinstellungen bereit, die den Bedarf an Standardcode reduzieren.
-
Erstellen Sie organisationsspezifische Stack-Klassen mit integrierten Injektoren.
-
Tauschen Sie bewährte Verfahren mithilfe wiederverwendbarer Injektoren teamübergreifend aus.
-
Vereinfachen Sie das Onboarding, indem Sie organisatorisches Wissen in Code kodieren.
-
Erste Schritte mit Blueprints
Hier ist ein einfaches Beispiel für die Erstellung und Verwendung eines Eigenschafteninjektors:
Erstellen Sie zunächst einen Property Injector für Amazon S3 S3-Buckets:
import { IPropertyInjector, InjectionContext } from 'aws-cdk-lib'; import { Bucket, BucketProps, BlockPublicAccess } from 'aws-cdk-lib/aws-s3'; export class SecureBucketDefaults implements IPropertyInjector { public readonly constructUniqueId: string; constructor() { this.constructUniqueId = Bucket.PROPERTY_INJECTION_ID; } public inject(originalProps: BucketProps, _context: InjectionContext): BucketProps { return { // Set security defaults blockPublicAccess: BlockPublicAccess.BLOCK_ALL, enforceSSL: true, // Include original props to allow overrides ...originalProps, }; } }
Verwenden Sie dann den Injektor in Ihrer CDK-Anwendung:
import { App, Stack } from 'aws-cdk-lib'; import { Bucket } from 'aws-cdk-lib/aws-s3'; import { SecureBucketDefaults } from './secure-bucket-defaults'; // Attach injectors when creating the App const app = new App({ propertyInjectors: [new SecureBucketDefaults()] }); const stack = new Stack(app, 'MyStack'); // This bucket automatically gets the default properties const myBucket = new Bucket(stack, 'MyBucket');
Alternativ können Sie die PropertyInjectors.of()
Methode verwenden:
import { App, Stack, PropertyInjectors } from 'aws-cdk-lib'; import { SecureBucketDefaults } from './secure-bucket-defaults'; const app = new App(); PropertyInjectors.of(app).add(new SecureBucketDefaults()); const stack = new Stack(app, 'MyStack'); const myBucket = new Bucket(stack, 'MyBucket');
Bewährte Methoden
-
Platzieren Sie die Standardeigenschaften davor
…originalProps
, um Überschreibungen zuzulassen. -
Platzieren Sie erzwungene Eigenschaften danach
…originalProps
, um Überschreibungen zu verhindern. -
Verwenden Sie beim Erstellen von Ressourcen ein Skip-Flag, um unendliche Rekursionen zu verhindern. Ein Beispiel finden Sie unter Was passiert, wenn Sie accessLogBucket für einen Bucket eine erstellen müssen
? im Property Injection RFC. -
Protokollierung für das Debuggen hinzugefügt.
-
Verwenden Sie den CDK-Kontext, um Injektoren für Tests zu aktivieren/deaktivieren.