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
Topik
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 init
menggunakan 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.
, diberi nama seperti, di mana nama layanan adalah nama pendek tanpa awalan AWS atau Amazon. Misalnya, nama NuGet paket untuk AWS IoT modul adalahSERVICE-NAME
.AlphaAmazon.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.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
.csproj
File 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
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
dotnet
Perintah
dotnet
Perintah 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 -vVERSION-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
nuget
Perintah
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
).