Bekerja dengan AWS CDK di C # - AWS Cloud Development Kit (AWS CDK) v2

Ini adalah Panduan Pengembang AWS CDK v2. CDKV1 yang lebih lama memasuki pemeliharaan pada 1 Juni 2022 dan mengakhiri dukungan pada 1 Juni 2023.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Bekerja dengan AWS CDK di C #

. NETadalah bahasa klien yang didukung penuh untuk AWS CDK dan dianggap stabil. C # adalah yang utama. NETbahasa yang kami berikan contoh dan dukungannya. Anda dapat memilih untuk menulis AWS CDK aplikasi lain. NETbahasa, seperti Visual Basic atau F #, tetapi AWS menawarkan dukungan terbatas untuk menggunakan bahasa-bahasa ini dengan bahasa. CDK

Anda dapat mengembangkan AWS CDK aplikasi di C # menggunakan alat yang sudah dikenal termasuk Visual Studio, Visual Studio Code, dotnet perintah, dan manajer NuGet paket. Modul yang terdiri dari AWS Construct Library didistribusikan melalui nuget.org.

Kami menyarankan menggunakan Visual Studio 2019 (edisi apa pun) di Windows untuk mengembangkan AWS CDK aplikasi di C #.

Memulai dengan C#

Untuk bekerja dengan AWS CDK, Anda harus memiliki AWS akun dan kredensional dan telah menginstal Node.js dan Toolkit. AWS CDK Lihat Memulai dengan AWS CDK.

AWS CDK Aplikasi C # membutuhkan. NETCore v3.1 atau yang lebih baru, tersedia di sini.

Itu. NETtoolchain termasukdotnet, alat baris perintah untuk membangun dan menjalankan. NETaplikasi dan mengelola NuGet paket. Bahkan jika Anda bekerja terutama di Visual Studio, perintah ini dapat berguna untuk operasi batch dan untuk menginstal paket AWS Construct Library.

Membuat proyek

Anda membuat AWS CDK proyek baru dengan memanggil cdk init dalam direktori kosong. Gunakan --language opsi dan tentukancsharp:

mkdir my-project cd my-project cdk init app --language csharp

cdk initmenggunakan nama folder proyek untuk memberi nama berbagai elemen proyek, termasuk kelas, subfolder, dan file. Tanda hubung dalam nama folder diubah menjadi garis bawah. Namun, nama tersebut harus mengikuti bentuk pengenal C#; misalnya, seharusnya tidak dimulai dengan angka atau berisi spasi.

Proyek yang dihasilkan mencakup referensi ke Amazon.CDK.Lib NuGet paket. Itu dan dependensinya diinstal secara otomatis oleh. NuGet

Mengelola AWS modul Construct Library

Itu. NETekosistem menggunakan manajer NuGet paket. CDKPaket utama, yang berisi kelas inti dan semua konstruksi layanan yang stabil, adalahAmazon.CDK.Lib. Modul eksperimental, di mana fungsionalitas baru sedang dalam pengembangan aktifAmazon.CDK.AWS.SERVICE-NAME.Alpha, diberi nama seperti, di mana nama layanan adalah nama pendek tanpa awalan AWS atau Amazon. Misalnya, nama NuGet paket untuk AWS IoT modul adalahAmazon.CDK.AWS.IoT.Alpha. Jika Anda tidak dapat menemukan paket yang Anda inginkan, cari Nuget.org.

catatan

Itu. NETedisi CDK API Referensi juga menunjukkan nama paket.

Dukungan AWS Construct Library beberapa layanan ada di lebih dari satu modul. Misalnya, AWS IoT memiliki modul kedua bernamaAmazon.CDK.AWS.IoT.Actions.Alpha.

Modul utama, yang Anda perlukan di sebagian besar AWS CDK aplikasi, diimpor dalam kode C # sebagaiAmazon.CDK. AWS CDK Modul untuk berbagai layanan di Perpustakaan AWS Konstruksi hidup di bawahAmazon.CDK.AWS. Misalnya, namespace modul Amazon S3 adalah. Amazon.CDK.AWS.S3

Kami merekomendasikan menulis using arahan C# untuk konstruksi CDK inti dan untuk setiap AWS layanan yang Anda gunakan di setiap file sumber C # Anda. Anda mungkin merasa nyaman menggunakan alias untuk namespace atau ketik untuk membantu menyelesaikan konflik nama. Anda selalu dapat menggunakan nama tipe yang sepenuhnya berkualitas (termasuk namespace-nya) tanpa pernyataan. using

Mengelola dependensi di C#

Di AWS CDK aplikasi C#, Anda mengelola dependensi menggunakan. NuGet NuGet memiliki empat antarmuka standar, sebagian besar setara. Gunakan salah satu yang sesuai dengan kebutuhan dan gaya kerja Anda. Anda juga dapat menggunakan alat yang kompatibel, seperti Paket atau MyGetatau bahkan mengedit .csproj file secara langsung.

NuGet tidak membiarkan Anda menentukan rentang versi untuk dependensi. Setiap dependensi disematkan ke versi tertentu.

Setelah memperbarui dependensi Anda, Visual Studio akan digunakan NuGet untuk mengambil versi yang ditentukan dari setiap paket saat Anda membangun berikutnya. Jika Anda tidak menggunakan Visual Studio, gunakan dotnet restore perintah untuk memperbarui dependensi Anda.

Mengedit file proyek secara langsung

.csprojFile proyek Anda berisi <ItemGroup> wadah yang mencantumkan dependensi Anda sebagai <PackageReference elemen.

<ItemGroup> <PackageReference Include="Amazon.CDK.Lib" Version="2.14.0" /> <PackageReference Include="Constructs" Version="%constructs-version%" /> </ItemGroup>

Studio Visual NuGet GUI

Alat Visual Studio dapat diakses dari NuGet Tools > NuGet Package Manager > Manage NuGet Packages for Solution. Gunakan tab Browse untuk menemukan paket AWS Construct Library yang ingin Anda instal. Anda dapat memilih versi yang diinginkan, termasuk versi prarilis modul Anda, dan menambahkannya ke salah satu proyek terbuka.

catatan

Semua modul AWS Construct Library yang dianggap “eksperimental” (lihatAWS CDK pembuatan versi) ditandai sebagai prarilis dan memiliki akhiran nama. NuGet alpha

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

Lihat di halaman Pembaruan untuk menginstal versi baru paket Anda.

NuGet Konsol

NuGet Konsol adalah antarmuka PowerShell berbasis NuGet yang berfungsi dalam konteks proyek Visual Studio. Anda dapat membukanya di Visual Studio dengan memilih Tools > NuGet Package Manager > Package Manager Console. Untuk informasi selengkapnya tentang penggunaan alat ini, lihat Menginstal dan Mengelola Paket dengan Package Manager Console di Visual Studio.

dotnetPerintah

dotnetPerintah adalah alat baris perintah utama untuk bekerja dengan proyek Visual Studio C #. Anda dapat memanggilnya dari prompt perintah Windows apa pun. Di antara banyak kemampuannya, dotnet dapat menambahkan NuGet dependensi ke proyek Visual Studio.

Dengan asumsi Anda berada di direktori yang sama dengan file proyek Visual Studio (.csproj), keluarkan perintah seperti berikut untuk menginstal paket. Karena CDK pustaka utama disertakan saat Anda membuat proyek, Anda hanya perlu menginstal modul eksperimental secara eksplisit. Modul eksperimental mengharuskan Anda untuk menentukan nomor versi eksplisit.

dotnet add package Amazon.CDK.AWS.IoT.Alpha -v VERSION-NUMBER

Anda dapat mengeluarkan perintah dari direktori lain. Untuk melakukannya, sertakan jalur ke file proyek, atau ke direktori yang berisi itu, setelah add kata kunci. Contoh berikut mengasumsikan bahwa Anda berada di direktori utama AWS CDK proyek Anda.

dotnet add src/PROJECT-DIR package Amazon.CDK.AWS.IoT.Alpha -v VERSION-NUMBER

Untuk menginstal versi paket tertentu, sertakan -v bendera dan versi yang diinginkan.

Untuk memperbarui paket, keluarkan dotnet add perintah yang sama yang Anda gunakan untuk menginstalnya. Untuk modul eksperimental, sekali lagi, Anda harus menentukan nomor versi eksplisit.

Untuk informasi selengkapnya tentang mengelola paket menggunakan dotnet perintah, lihat Menginstal dan Mengelola Paket Menggunakan dotnet CLI.

nugetPerintah

Alat baris nuget perintah dapat menginstal dan memperbarui NuGet paket. Namun, proyek Visual Studio Anda harus diatur secara berbeda dari cara cdk init menyiapkan proyek. (Detail teknis: nuget bekerja dengan Packages.config proyek, sambil cdk init membuat PackageReference proyek bergaya baru.)

Kami tidak merekomendasikan penggunaan nuget alat dengan AWS CDK proyek yang dibuat olehcdk init. Jika Anda menggunakan jenis proyek lain, dan ingin menggunakannyanuget, lihat NuGet CLIReferensi.

AWS CDK idiom dalam C #

Alat Peraga

Semua kelas AWS Construct Library dipakai menggunakan tiga argumen: ruang lingkup di mana konstruksi sedang didefinisikan (induknya di pohon konstruksi), id, dan props, bundel pasangan kunci/nilai yang digunakan konstruksi untuk mengkonfigurasi sumber daya yang dibuatnya. Kelas dan metode lain juga menggunakan pola “bundel atribut” untuk argumen.

Dalam C #, alat peraga diekspresikan menggunakan tipe alat peraga. Dengan gaya C# idiomatik, kita dapat menggunakan penginisialisasi objek untuk mengatur berbagai properti. Di sini kita membuat bucket Amazon S3 menggunakan Bucket konstruksinya; jenis alat peraga yang sesuai adalah. BucketProps

var bucket = new Bucket(this, "amzn-s3-demo-bucket", new BucketProps { Versioned = true });
Tip

Tambahkan paket ke proyek Anda Amazon.JSII.Analyzers untuk mendapatkan pemeriksaan nilai yang diperlukan dalam definisi alat peraga Anda di dalam Visual Studio.

Saat memperluas kelas atau mengganti metode, Anda mungkin ingin menerima alat peraga tambahan untuk tujuan Anda sendiri yang tidak dipahami oleh kelas induk. Untuk melakukan ini, subkelas jenis alat peraga yang sesuai dan tambahkan atribut baru.

// 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" });

Saat memanggil initializer kelas induk atau metode overridden, Anda biasanya dapat meneruskan props yang Anda terima. Tipe baru kompatibel dengan induknya, dan alat peraga tambahan yang Anda tambahkan diabaikan.

Rilis future AWS CDK dapat secara kebetulan menambahkan properti baru dengan nama yang Anda gunakan untuk properti Anda sendiri. Ini tidak akan menyebabkan masalah teknis apa pun menggunakan konstruksi atau metode Anda (karena properti Anda tidak melewati “naik rantai,” kelas induk atau metode yang diganti hanya akan menggunakan nilai default) tetapi dapat menyebabkan kebingungan bagi pengguna konstruksi Anda. Anda dapat menghindari masalah potensial ini dengan memberi nama properti Anda sehingga mereka jelas milik konstruksi Anda. Jika ada banyak properti baru, bundel mereka ke dalam kelas dengan nama yang tepat dan meneruskannya sebagai properti tunggal.

Struktur generik

Dalam beberapaAPIs, AWS CDK menggunakan JavaScript array atau objek untyped sebagai input ke metode. (Lihat, misalnya, AWS CodeBuildBuildSpec.fromObject()metode.) Dalam C #, objek-objek ini direpresentasikan sebagaiSystem.Collections.Generic.Dictionary<String, Object>. Dalam kasus di mana nilai-nilai semua string, Anda dapat menggunakanDictionary<String, String>. JavaScript array direpresentasikan sebagai object[] atau tipe string[] array di C #.

Tip

Anda dapat menentukan alias pendek untuk membuatnya lebih mudah untuk bekerja dengan jenis kamus khusus ini.

using StringDict = System.Collections.Generic.Dictionary<string, string>; using ObjectDict = System.Collections.Generic.Dictionary<string, object>;

Nilai yang hilang

Dalam C #, nilai yang hilang dalam AWS CDK objek seperti alat peraga diwakili oleh. null Operator akses anggota bersyarat nol ?. dan operator penggabungan nol nyaman untuk bekerja dengan nilai-nilai ini. ??

// 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";

Membangun dan menjalankan CDK aplikasi

AWS CDK Secara otomatis mengompilasi aplikasi Anda sebelum menjalankannya. Namun, membangun aplikasi Anda secara manual dapat berguna untuk memeriksa kesalahan dan menjalankan pengujian. Anda dapat melakukan ini dengan menekan F6 di Visual Studio atau dengan mengeluarkan dotnet build src dari baris perintah, di mana src direktori di direktori proyek Anda yang berisi file Visual Studio Solution (.sln).