

Ini adalah Panduan Pengembang AWS CDK v2. CDK v1 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 \$1
<a name="work-with-cdk-csharp"></a>

.NET adalah bahasa klien yang didukung penuh untuk AWS CDK dan dianggap stabil. C \$1 adalah bahasa.NET utama yang kami berikan contoh dan dukungannya. Anda dapat memilih untuk menulis aplikasi AWS CDK dalam bahasa.NET lainnya, seperti Visual Basic atau F \$1, tetapi AWS menawarkan dukungan terbatas untuk menggunakan bahasa ini dengan CDK.

Anda dapat mengembangkan aplikasi AWS CDK di C \$1 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.](https://www.nuget.org/packages?q=amazon.cdk.aws)

Kami menyarankan menggunakan [Visual Studio 2019](https://visualstudio.microsoft.com/downloads/) (edisi apa pun) di Windows untuk mengembangkan aplikasi AWS CDK di C \$1.

## Memulai dengan C\$1
<a name="csharp-prerequisites"></a>

Untuk bekerja dengan AWS CDK, Anda harus memiliki AWS akun dan kredensional dan telah menginstal Node.js dan CDK Toolkit. AWS Lihat [Memulai dengan AWS CDK](getting-started.md).

[Aplikasi C\$1 AWS CDK membutuhkan .NET 8.0 atau yang lebih baru, tersedia di sini.](https://dotnet.microsoft.com/en-us/download/dotnet)

**catatan**  
Penghentian bahasa pihak ketiga: versi bahasa hanya didukung hingga EOL (End Of Life) dibagikan oleh vendor atau komunitas dan dapat berubah sewaktu-waktu dengan pemberitahuan sebelumnya.

Rantai alat .NET mencakup`dotnet`, alat baris perintah untuk membangun dan menjalankan aplikasi.NET dan mengelola paket. NuGet Bahkan jika Anda bekerja terutama di Visual Studio, perintah ini dapat berguna untuk operasi batch dan untuk menginstal paket AWS Construct Library.

## Membuat proyek
<a name="csharp-newproject"></a>

Anda membuat proyek AWS CDK baru dengan memanggil `cdk init` di direktori kosong. Gunakan `--language` opsi dan tentukan`csharp`:

```
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\$1; 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
<a name="csharp-managemodules"></a>

Ekosistem .NET menggunakan manajer NuGet paket. Paket CDK utama, yang berisi kelas inti dan semua konstruksi layanan yang stabil, adalah. `Amazon.CDK.Lib` Modul eksperimental, di mana fungsionalitas baru sedang dalam pengembangan aktif`Amazon.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 modul AWS IoT adalah. `Amazon.CDK.AWS.IoT.Alpha` Jika Anda tidak dapat menemukan paket yang Anda inginkan, [cari Nuget.org](https://www.nuget.org/packages?q=amazon.cdk.aws).

**catatan**  
[Edisi .NET dari Referensi API CDK](https://docs.aws.amazon.com/cdk/api/latest/dotnet/api/index.html) juga menunjukkan nama paket.

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

Modul utama AWS CDK, yang Anda perlukan di sebagian besar aplikasi AWS CDK, diimpor dalam kode C \$1 sebagai. `Amazon.CDK` Modul untuk berbagai layanan di Perpustakaan AWS Konstruksi hidup di bawah`Amazon.CDK.AWS `. Misalnya, namespace modul Amazon S3 adalah. `Amazon.CDK.AWS.S3`

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

## Mengelola dependensi di C \$1
<a name="work-with-cdk-csharp-dependencies"></a>

Di aplikasi C\$1 AWS CDK, 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](https://fsprojects.github.io/Paket/) atau [MyGet](https://www.myget.org/)atau 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
<a name="manage-dependencies-csharp-direct-edit"></a>

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

### NuGet GUI Visual Studio
<a name="manage-dependencies-csharp-vs-nuget-gui"></a>

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” (lihat [versi AWS CDK) ditandai sebagai prarilis](versioning.md) dan memiliki akhiran nama. NuGet `alpha`

![\[NuGet manajer paket yang menunjukkan paket <shared id="AWS"/> alfa Amazon CDK untuk berbagai layanan.\]](http://docs.aws.amazon.com/id_id/cdk/v2/guide/images/visual-studio-nuget.png)


Lihat di halaman **Pembaruan** untuk menginstal versi baru paket Anda.

### NuGet Konsol
<a name="manage-dependencies-csharp-vs-nuget-console"></a>

 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](https://docs.microsoft.com/en-us/nuget/consume-packages/install-use-packages-powershell).

### `dotnet`Perintah
<a name="manage-dependencies-csharp-vs-dotnet-command"></a>

`dotnet`Perintah adalah alat baris perintah utama untuk bekerja dengan proyek Visual Studio C \$1. 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 pustaka CDK utama disertakan saat Anda membuat proyek, Anda hanya perlu menginstal modul eksperimental secara eksplisit. Modul eksperimental mengharuskan Anda 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 proyek AWS CDK 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 CLI dotnet](https://docs.microsoft.com/en-us/nuget/consume-packages/install-use-packages-dotnet-cli).

### `nuget`Perintah
<a name="manage-dependencies-csharp-vs-nuget-command"></a>

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 proyek AWS CDK yang dibuat oleh`cdk init`. Jika Anda menggunakan jenis proyek lain, dan ingin menggunakannya`nuget`, lihat Referensi [NuGet CLI](https://docs.microsoft.com/en-us/nuget/reference/nuget-exe-cli-reference).

## AWS Idiom CDK dalam C \$1
<a name="csharp-cdk-idioms"></a>

### Alat Peraga
<a name="csharp-props"></a>

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

Dalam C \$1, alat peraga diekspresikan menggunakan tipe alat peraga. Dengan gaya C\$1 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 AWS CDK di masa depan secara kebetulan dapat 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
<a name="csharp-generic-structures"></a>

Dalam beberapa APIs, AWS CDK menggunakan JavaScript array atau objek yang tidak diketik sebagai input ke metode. (Lihat, misalnya, AWS CodeBuild [https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_codebuild.BuildSpec.html](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_codebuild.BuildSpec.html)metode.) Dalam C \$1, objek-objek ini direpresentasikan sebagai`System.Collections.Generic.Dictionary<String, Object>`. Dalam kasus di mana nilai-nilai semua string, Anda dapat menggunakan`Dictionary<String, String>`. JavaScript array direpresentasikan sebagai `object[]` atau tipe `string[]` array di C \$1.

**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
<a name="csharp-missing-values"></a>

Dalam C \$1, nilai yang hilang dalam objek AWS CDK 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 aplikasi CDK
<a name="csharp-running"></a>

 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`).