Dies ist der AWS CDK v2-Entwicklerhandbuch. Die ältere CDK Version 1 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.
Passen Sie Konstrukte aus der AWS Construct-Bibliothek an
Passen Sie Gebäudemodule aus der AWS Gebäudebibliothek mithilfe von Escape-Schraffuren, unverarbeiteten Überschreibungen und benutzerdefinierten Ressourcen an Ihre Bedürfnisse an.
Themen
Benutze Fluchtluken
Die AWS Construct Library bietet Konstrukte mit unterschiedlichen Abstraktionsebenen.
Auf der höchsten Ebene sind Ihre AWS CDK Anwendung und die darin enthaltenen Stapel selbst Abstraktionen Ihrer gesamten Cloud-Infrastruktur oder wesentlicher Teile davon. Sie können parametrisiert werden, um sie in verschiedenen Umgebungen oder für unterschiedliche Anforderungen bereitzustellen.
Abstraktionen sind leistungsstarke Tools für den Entwurf und die Implementierung von Cloud-Anwendungen. Das AWS CDK gibt Ihnen die Möglichkeit, nicht nur mit seinen Abstraktionen zu bauen, sondern auch neue Abstraktionen zu erstellen. Anhand der vorhandenen Open-Source-L2- und L3-Konstrukte können Sie Ihre eigenen L2- und L3-Konstrukte erstellen, die den bewährten Verfahren und Meinungen Ihrer eigenen Organisation entsprechen.
Keine Abstraktion ist perfekt, und selbst gute Abstraktionen können nicht jeden möglichen Anwendungsfall abdecken. Während der Entwicklung finden Sie möglicherweise ein Konstrukt, das Ihren Anforderungen fast entspricht und eine kleine oder große Anpassung erfordert.
Aus diesem Grund AWS CDK bietet das Möglichkeiten, aus dem Konstruktmodell auszubrechen. Dazu gehört der Übergang zu einer abstrakteren Ebene oder zu einem völlig anderen Modell. Mit Notluken können Sie dem AWS CDK Paradigma entfliehen und es so anpassen, dass es Ihren Bedürfnissen entspricht. Anschließend können Sie Ihre Änderungen in einem neuen Konstrukt zusammenfassen, um die zugrundeliegende Komplexität wegzunehmen und anderen Entwicklern eine Bereinigung API zu ermöglichen.
Im Folgenden finden Sie Beispiele für Situationen, in denen Sie Notluken verwenden können:
-
Eine AWS Service-Funktion ist über verfügbar AWS CloudFormation, aber es gibt keine L2-Konstrukte dafür.
-
Ein AWS Service-Feature ist über verfügbar AWS CloudFormation, und es gibt L2-Konstrukte für den Service, aber diese machen das Feature noch nicht verfügbar. Da L2-Konstrukte vom CDK Team kuratiert werden, sind sie möglicherweise nicht sofort für neue Funktionen verfügbar.
-
Die Funktion ist noch gar nicht verfügbar. AWS CloudFormation
Informationen darüber, ob eine Funktion über verfügbar ist AWS CloudFormation, finden Sie in der Referenz zu AWS Ressourcen- und Eigenschaftstypen.
Entwickeln Sie Notluken für L1-Konstrukte
Wenn L2-Konstrukte für den Service nicht verfügbar sind, können Sie die automatisch generierten L1-Konstrukte verwenden. Diese Ressourcen können daran erkannt werden, dass ihr Name mit beginntCfn
, z. B. oder. CfnBucket
CfnRole
Sie instanziieren sie genau so, wie Sie die entsprechende AWS CloudFormation Ressource verwenden würden.
Um beispielsweise einen Amazon S3 S3-Bucket L1 auf niedriger Ebene mit aktivierter Analytik zu instanziieren, würden Sie etwa Folgendes schreiben.
Es kann seltene Fälle geben, in denen Sie eine Ressource definieren möchten, für die es keine entsprechende Klasse gibt. CfnXxx
Dies könnte ein neuer Ressourcentyp sein, der noch nicht in der AWS CloudFormation Ressourcenspezifikation veröffentlicht wurde. In solchen Fällen können Sie den cdk.CfnResource
direkt instanziieren und den Ressourcentyp und die Eigenschaften angeben. Dies wird im folgenden Beispiel veranschaulicht.
Entwickeln Sie Fluchtluken für L2-Konstrukte
Wenn in einem L2-Konstrukt ein Feature fehlt oder Sie versuchen, ein Problem zu umgehen, können Sie das L1-Konstrukt ändern, das durch das L2-Konstrukt gekapselt ist.
Alle L2-Konstrukte enthalten das entsprechende L1-Konstrukt. Beispielsweise umschließt das Bucket
Konstrukt auf hoher Ebene das Konstrukt auf niedriger Ebene. CfnBucket
Da das direkt der AWS CloudFormation Ressource CfnBucket
entspricht, macht es alle Funktionen verfügbar, die über verfügbar sind. AWS CloudFormation
Der grundlegende Ansatz, um Zugriff auf das L1-Konstrukt zu erhalten, besteht darin, construct.node.defaultChild
(Python:default_child
) zu verwenden, es in den richtigen Typ umzuwandeln (falls erforderlich) und seine Eigenschaften zu ändern. Nehmen wir noch einmal das Beispiel von a. Bucket
Sie können dieses Objekt auch verwenden, um AWS CloudFormation Optionen wie Metadata
und zu ändernUpdatePolicy
.
Verwenden Sie Luken, die nicht entkommen können
Das bietet AWS CDK auch die Möglichkeit, eine Abstraktionsebene zu erreichen, was wir als „Un-Escape-Luke“ bezeichnen könnten. Wenn Sie beispielsweise ein L1-Konstrukt haben, können Sie ein neues L2-Konstrukt (Bucket
in diesem Fall) erstellenCfnBucket
, um das L1-Konstrukt zu umschließen.
Dies ist praktisch, wenn Sie eine L1-Ressource erstellen, sie aber mit einem Konstrukt verwenden möchten, das eine L2-Ressource benötigt. Es ist auch hilfreich, wenn Sie praktische Methoden verwenden möchten, wie sie für .grantXxxxx()
das L1-Konstrukt nicht verfügbar sind.
Sie wechseln zur höheren Abstraktionsebene, indem Sie eine statische Methode für die L2-Klasse verwenden, die aufgerufen wird .fromCfnXxxxx()
— zum Beispiel Bucket.fromCfnBucket()
für Amazon S3 S3-Buckets. Die L1-Ressource ist der einzige Parameter.
Aus L1-Konstrukten erstellte L2-Konstrukte sind Proxyobjekte, die auf die L1-Ressource verweisen, ähnlich denen, die aus Ressourcennamen oder Lookups erstellt wurden. ARNs Änderungen an diesen Konstrukten wirken sich nicht auf die endgültige synthetisierte AWS CloudFormation Vorlage aus (da Sie über die L1-Ressource verfügen, können Sie diese jedoch stattdessen ändern). Weitere Informationen zu Proxyobjekten finden Sie unter. Verweisen auf Ressourcen in Ihrem Konto AWS
Um Verwirrung zu vermeiden, sollten Sie nicht mehrere L2-Konstrukte erstellen, die sich auf dasselbe L1-Konstrukt beziehen. Wenn Sie beispielsweise Bucket
mit der Technik CfnBucket
aus dem vorherigen Abschnitt das aus einem extrahieren, sollten Sie keine zweite Bucket
Instanz erstellen, indem Sie damit aufrufenBucket.fromCfnBucket()
. CfnBucket
Es funktioniert tatsächlich so, wie Sie es erwarten würden (nur eine AWS::S3::Bucket
wird synthetisiert), aber es macht es schwieriger, Ihren Code zu verwalten.
Verwenden Sie rohe Überschreibungen
Wenn es Eigenschaften gibt, die im L1-Konstrukt fehlen, können Sie die gesamte Eingabe mithilfe von Rohüberschreibungen umgehen. Dadurch ist es auch möglich, synthetisierte Eigenschaften zu löschen.
Verwenden Sie eine der addOverride
Methoden (Python:add_override
), wie im folgenden Beispiel gezeigt.
Verwenden Sie benutzerdefinierte Ressourcen
Wenn die Funktion nicht über AWS CloudFormation, sondern nur über einen direkten API Anruf verfügbar ist, müssen Sie eine AWS CloudFormation benutzerdefinierte Ressource schreiben, um den gewünschten API Anruf zu tätigen. Sie können die verwenden AWS CDK , um benutzerdefinierte Ressourcen zu schreiben und sie in eine reguläre Construct-Schnittstelle einzubinden. Aus der Sicht eines Anwenders Ihres Konstrukts wird sich das Erlebnis wie einheimisch anfühlen.
Das Erstellen einer benutzerdefinierten Ressource beinhaltet das Schreiben einer Lambda-Funktion, die auf die Ereignisse und DELETE
Lebenszyklusereignisse einer Ressource reagiert. CREATE
UPDATE
Wenn Ihre benutzerdefinierte Ressource nur einen einzigen API Aufruf tätigen muss, sollten Sie die AwsCustomResource
Das Thema ist zu weit gefasst, um es hier vollständig zu behandeln, aber die folgenden Links sollten Ihnen den Einstieg erleichtern:
-
Ein vollständigeres Beispiel finden Sie in der DnsValidatedCertificate
Klasse in der CDK Standardbibliothek. Dies ist als benutzerdefinierte Ressource implementiert.