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.
Arbeiten mit dem AWS CDK in C#
. NETist eine vollständig unterstützte Client-Sprache für die AWS CDK und gilt als stabil. C# ist die wichtigste. NETSprache, für die wir Beispiele und Unterstützung bereitstellen. Sie können wählen, ob Sie AWS CDK Bewerbungen in einer anderen Sprache schreiben möchten. NETSprachen wie Visual Basic oder F#, AWS bietet jedoch eingeschränkte Unterstützung für die Verwendung dieser Sprachen mit demCDK.
Sie können AWS CDK Anwendungen in C# mit vertrauten Tools wie Visual Studio, Visual Studio Code, dem dotnet
Befehl und dem NuGet Paketmanager entwickeln. Die Module, aus denen die AWS Construct-Bibliothek besteht, werden über nuget.org
Wir empfehlen, Visual Studio 2019
Themen
Fangen Sie an mit C#
Um mit dem arbeiten zu können AWS CDK, müssen Sie über ein AWS Konto und Anmeldeinformationen verfügen und Node.js und das AWS CDK Toolkit installiert haben. Siehe Erste Schritte mit dem AWS CDK.
AWS CDK C#-Anwendungen erfordern. NETCore v3.1 oder höher, hier erhältlich.
Das. NETDie Toolchain umfasst dotnet
ein Befehlszeilentool zum Erstellen und Ausführen. NETAnwendungen und Verwaltung von Paketen. NuGet Auch wenn Sie hauptsächlich in Visual Studio arbeiten, kann dieser Befehl für Batchoperationen und für die Installation von AWS Construct Library-Paketen nützlich sein.
Erstellen eines Projekts
Sie erstellen ein neues AWS CDK Projekt, indem Sie es cdk init
in einem leeren Verzeichnis aufrufen. Verwenden Sie die --language
Option und geben Sie ancsharp
:
mkdir my-project cd my-project cdk init app --language csharp
cdk init
verwendet den Namen des Projektordners, um verschiedene Elemente des Projekts zu benennen, einschließlich Klassen, Unterordnern und Dateien. Bindestriche im Ordnernamen werden in Unterstriche umgewandelt. Ansonsten sollte der Name jedoch die Form eines C#-Bezeichners haben; er sollte beispielsweise nicht mit einer Zahl beginnen oder Leerzeichen enthalten.
Das resultierende Projekt enthält einen Verweis auf das Amazon.CDK.Lib
NuGet Paket. Es und seine Abhängigkeiten werden automatisch von installiert NuGet.
Verwaltung von AWS Construct Library-Modulen
Das. NETDas Ökosystem verwendet den NuGet Paketmanager. Das CDK Hauptpaket, das die Kernklassen und alle stabilen Dienstkonstrukte enthält, istAmazon.CDK.Lib
. Experimentelle Module, bei denen neue Funktionen aktiv entwickelt werden, werden wie benanntAmazon.CDK.AWS.
, wobei der Servicename ein Kurzname ohne AWS oder Amazon-Präfix ist. Der NuGet Paketname für das AWS IoT Modul lautet beispielsweiseSERVICE-NAME
.AlphaAmazon.CDK.AWS.IoT.Alpha
. Wenn Sie ein gewünschtes Paket nicht finden können, suchen Sie auf NuGet.org
Anmerkung
Das. NETDie Ausgabe der CDK API Referenz zeigt auch die Paketnamen.
Die AWS Construct Library-Unterstützung einiger Dienste ist in mehr als einem Modul enthalten. AWS IoT Hat zum Beispiel ein zweites Modul mit dem NamenAmazon.CDK.AWS.IoT.Actions.Alpha
.
AWS CDK Das Hauptmodul, das Sie in den meisten AWS CDK Apps benötigen, wird in C#-Code als Amazon.CDK
importiert. Module für die verschiedenen Dienste in der AWS Construct-Bibliothek befinden sich unterAmazon.CDK.AWS
. Der Namespace des Amazon S3 S3-Moduls lautet Amazon.CDK.AWS.S3
beispielsweise.
Wir empfehlen, using
C#-Direktiven für die CDK Kernkonstrukte und für jeden AWS Service zu schreiben, den Sie in jeder Ihrer C#-Quelldateien verwenden. Möglicherweise finden Sie es praktisch, einen Alias für einen Namespace oder Typ zu verwenden, um Namenskonflikte zu lösen. Sie können jederzeit den vollqualifizierten Namen eines Typs (einschließlich seines Namespaces) ohne Anweisung verwenden. using
Verwaltung von Abhängigkeiten in C#
In AWS CDK C#-Apps verwalten Sie Abhängigkeiten mit NuGet. NuGet hat vier Standardschnittstellen, die größtenteils gleichwertig sind. Verwenden Sie diejenige, die Ihren Bedürfnissen und Ihrem Arbeitsstil entspricht. Sie können auch kompatible Tools wie Paket.csproj
Datei sogar direkt bearbeiten.
NuGet erlaubt es Ihnen nicht, Versionsbereiche für Abhängigkeiten anzugeben. Jede Abhängigkeit ist an eine bestimmte Version gebunden.
Nach der Aktualisierung Ihrer Abhängigkeiten ruft Visual Studio beim nächsten Erstellen die angegebenen Versionen der einzelnen Pakete ab. NuGet Wenn Sie Visual Studio nicht verwenden, verwenden Sie den dotnet restore Befehl, um Ihre Abhängigkeiten zu aktualisieren.
Direktes Bearbeiten der Projektdatei
Die .csproj
Datei Ihres Projekts enthält einen <ItemGroup>
Container, der Ihre Abhängigkeiten als <PackageReference
Elemente auflistet.
<ItemGroup> <PackageReference Include="Amazon.CDK.Lib" Version="2.14.0" /> <PackageReference Include="Constructs" Version="%constructs-version%" /> </ItemGroup>
Das Visual Studio NuGet GUI
Auf die NuGet Tools von Visual Studio kann über Tools > NuGet Package Manager > Manage NuGet Packages for Solution zugegriffen werden. Verwenden Sie die Registerkarte Durchsuchen, um die AWS Construct Library-Pakete zu finden, die Sie installieren möchten. Sie können die gewünschte Version, einschließlich Vorabversionen Ihrer Module, auswählen und sie zu jedem der geöffneten Projekte hinzufügen.
Anmerkung
Alle Module der AWS Construct Library, die als „experimentell“ gelten (sieheAWS CDK Versioning), sind als Vorabversion gekennzeichnet NuGet und haben ein Namenssuffix. alpha
Schauen Sie auf der Seite Updates nach, um neue Versionen Ihrer Pakete zu installieren.
Die NuGet Konsole
Die NuGet Konsole ist eine PowerShell basierte Schnittstelle, NuGet die im Kontext eines Visual Studio-Projekts funktioniert. Sie können es in Visual Studio öffnen, indem Sie Tools > NuGet Package Manager > Package Manager Console wählen. Weitere Informationen zur Verwendung dieses Tools finden Sie unter Installieren und Verwalten von Paketen mit der Package Manager Console in Visual Studio
Der dotnet
Befehl
Der dotnet
Befehl ist das primäre Befehlszeilentool für die Arbeit mit Visual Studio C#-Projekten. Sie können ihn von jeder Windows-Eingabeaufforderung aus aufrufen. Zu seinen zahlreichen Funktionen gehört das dotnet
Hinzufügen von NuGet Abhängigkeiten zu einem Visual Studio-Projekt.
Angenommen, Sie befinden sich im selben Verzeichnis wie die Visual Studio-Projektdatei (.csproj
), geben Sie einen Befehl wie den folgenden ein, um ein Paket zu installieren. Da die CDK Hauptbibliothek beim Erstellen eines Projekts enthalten ist, müssen Sie nur experimentelle Module explizit installieren. Bei experimentellen Modulen müssen Sie eine explizite Versionsnummer angeben.
dotnet add package Amazon.CDK.AWS.IoT.Alpha -v
VERSION-NUMBER
Sie können den Befehl von einem anderen Verzeichnis aus ausführen. Geben Sie dazu nach dem add
Schlüsselwort den Pfad zur Projektdatei oder zu dem Verzeichnis an, das sie enthält. Im folgenden Beispiel wird davon ausgegangen, dass Sie sich im Hauptverzeichnis Ihres AWS CDK Projekts befinden.
dotnet add src/
PROJECT-DIR
package Amazon.CDK.AWS.IoT.Alpha -vVERSION-NUMBER
Um eine bestimmte Version eines Pakets zu installieren, fügen Sie das -v
Flag und die gewünschte Version hinzu.
Um ein Paket zu aktualisieren, geben Sie denselben dotnet add
Befehl ein, mit dem Sie es installiert haben. Auch für experimentelle Module müssen Sie eine explizite Versionsnummer angeben.
Weitere Informationen zur Verwaltung von Paketen mithilfe des dotnet
Befehls finden Sie unter Pakete mit dem Dotnet CLI installieren und verwalten
Der Befehl nuget
Das nuget
Befehlszeilentool kann NuGet Pakete installieren und aktualisieren. Es erfordert jedoch, dass Ihr Visual Studio-Projekt anders eingerichtet wird als beim cdk init
Einrichten von Projekten. (Technische Details: nuget
funktioniert mit Packages.config
Projekten, cdk init
erstellt aber ein Projekt im neueren StilPackageReference
.)
Wir empfehlen nicht, das nuget
Tool für AWS CDK Projekte zu verwenden, die von erstellt wurden. cdk init
Wenn Sie einen anderen Projekttyp verwenden und diesen verwenden möchtennuget
, finden Sie weitere Informationen in der NuGet CLIReferenz
AWS CDK Redewendungen in C#
Requisiten
Alle AWS Construct-Library-Klassen werden mit drei Argumenten instanziiert: dem Bereich, in dem das Konstrukt definiert wird (sein übergeordnetes Objekt im Konstruktbaum), einer ID und props, einem Bündel von Schlüssel/Wert-Paaren, die das Konstrukt verwendet, um die von ihm erstellten Ressourcen zu konfigurieren. Andere Klassen und Methoden verwenden ebenfalls das Muster „Bündel von Attributen“ für Argumente.
In C# werden Requisiten mit einem Requisitentyp ausgedrückt. In idiomatischer C#-Manier können wir einen Objektinitialisierer verwenden, um die verschiedenen Eigenschaften festzulegen. Hier erstellen wir einen Amazon S3 S3-Bucket mit dem Bucket
Konstrukt; der entsprechende Requisitentyp istBucketProps
.
var bucket = new Bucket(this, "amzn-s3-demo-bucket", new BucketProps { Versioned = true });
Tipp
Fügen Sie das Paket Amazon.JSII.Analyzers
zu Ihrem Projekt hinzu, damit die erforderlichen Werte in Ihren Requisitendefinitionen in Visual Studio überprüft werden.
Wenn Sie eine Klasse erweitern oder eine Methode überschreiben, möchten Sie möglicherweise zusätzliche Requisiten für Ihre eigenen Zwecke akzeptieren, die von der übergeordneten Klasse nicht verstanden werden. Dazu müssen Sie den entsprechenden Requisitentyp in Unterklassen unterteilen und die neuen Attribute hinzufügen.
// extend BucketProps for use with MimeBucket class MimeBucketProps : BucketProps { public string MimeType { get; set; } } // hypothetical bucket that enforces MIME type of objects inside it class MimeBucket : Bucket { public MimeBucket( readonly Construct scope, readonly string id, readonly MimeBucketProps props=null) : base(scope, id, props) { // ... } } // instantiate our MimeBucket class var bucket = new MimeBucket(this, "amzn-s3-demo-bucket", new MimeBucketProps { Versioned = true, MimeType = "image/jpeg" });
Wenn Sie den Initialisierer oder die überschriebene Methode der übergeordneten Klasse aufrufen, können Sie im Allgemeinen die Requisiten übergeben, die Sie erhalten haben. Der neue Typ ist mit seinem übergeordneten Typ kompatibel, und zusätzliche Requisiten, die Sie hinzugefügt haben, werden ignoriert.
In einer future Version von AWS CDK könnte zufällig eine neue Immobilie mit einem Namen hinzugefügt werden, den Sie für Ihre eigene Immobilie verwendet haben. Dies wird bei der Verwendung Ihres Konstrukts oder Ihrer Methode zu keinen technischen Problemen führen (da Ihre Eigenschaft nicht „nach oben“ weitergegeben wird, verwendet die übergeordnete Klasse oder überschriebene Methode einfach einen Standardwert), kann aber bei den Benutzern Ihres Konstrukts zu Verwirrung führen. Sie können dieses potenzielle Problem vermeiden, indem Sie Ihre Eigenschaften so benennen, dass sie eindeutig zu Ihrem Konstrukt gehören. Wenn es viele neue Eigenschaften gibt, bündeln Sie sie in einer Klasse mit dem entsprechenden Namen und übergeben Sie sie als einzelne Eigenschaft.
Generische Strukturen
In einigen APIs Fällen werden JavaScript Arrays oder untypisierte Objekte als Eingabe für eine Methode AWS CDK verwendet. (Siehe zum Beispiel die Methode.) AWS CodeBuildBuildSpec.fromObject()
In C# werden diese Objekte dargestellt alsSystem.Collections.Generic.Dictionary<String, Object>
. In Fällen, in denen es sich bei den Werten ausschließlich um Zeichenketten handelt, können Sie Folgendes verwendenDictionary<String, String>
. JavaScript Arrays werden in C# als object[]
string[]
Array-Typen dargestellt.
Tipp
Sie können kurze Aliase definieren, um die Arbeit mit diesen speziellen Wörterbuchtypen zu vereinfachen.
using StringDict = System.Collections.Generic.Dictionary<string, string>; using ObjectDict = System.Collections.Generic.Dictionary<string, object>;
Fehlende Werte
In C# werden fehlende Werte in AWS CDK Objekten wie Requisiten durch dargestellt. null
Der Null-bedingte Elementzugriffsoperator ?.
und der Null-Koaleszenzoperator ??
eignen sich für die Arbeit mit diesen Werten.
// mimeType is null if props is null or if props.MimeType is null string mimeType = props?.MimeType; // mimeType defaults to text/plain. either props or props.MimeType can be null string MimeType = props?.MimeType ?? "text/plain";
CDKAnwendungen erstellen und ausführen
Der kompiliert Ihre App AWS CDK automatisch, bevor sie ausgeführt wird. Es kann jedoch nützlich sein, Ihre App manuell zu erstellen, um nach Fehlern zu suchen und Tests durchzuführen. Sie können dies tun, indem Sie in Visual Studio F6 drücken oder von der Befehlszeile dotnet build
src
aus eingeben, wo sich das Verzeichnis in Ihrem Projektverzeichnis src
befindet, das die Visual Studio Solution (.sln
) -Datei enthält.