Arbeiten mit dem AWS CDK in C# - AWS Cloud Development Kit (AWS CDK) v2

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 vertrieben.

Wir empfehlen, Visual Studio 2019 (jede Edition) unter Windows zu verwenden, um AWS CDK Apps in C# zu entwickeln.

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 initverwendet 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.SERVICE-NAME.Alpha, wobei der Servicename ein Kurzname ohne AWS oder Amazon-Präfix ist. Der NuGet Paketname für das AWS IoT Modul lautet beispielsweiseAmazon.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 verwenden MyGetoder die .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

NuGet package manager showing Amazon CDKAWS alpha packages for various services.

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 -v VERSION-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.