

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

# Menyebarkan fungsi C\$1 Lambda menggunakan AWS CDK
<a name="csharp-package-cdk"></a>

 AWS Cloud Development Kit (AWS CDK) Ini adalah kerangka pengembangan perangkat lunak open-source untuk mendefinisikan infrastruktur cloud sebagai kode dengan bahasa pemrograman modern dan kerangka kerja seperti .NET. AWS CDK proyek dijalankan untuk menghasilkan CloudFormation template yang kemudian digunakan untuk menyebarkan kode Anda.

Untuk membangun dan menyebarkan contoh aplikasi Hello world .NET menggunakan AWS CDK, ikuti petunjuk di bagian berikut. Aplikasi sampel mengimplementasikan backend API dasar yang terdiri dari titik akhir API Gateway dan fungsi Lambda. API Gateway memanggil fungsi Lambda saat Anda mengirim permintaan HTTP GET ke titik akhir. Fungsi ini mengembalikan pesan Hello world, bersama dengan alamat IP dari instance Lambda yang memproses permintaan Anda.

## Prasyarat
<a name="csharp-package-cdk-prereqs"></a>

**.NET 8 SDK**  
Instal [.NET 8](https://dotnet.microsoft.com/en-us/download/dotnet/8.0) SDK dan Runtime.

**AWS CDK versi 2**  
Untuk mempelajari cara menginstal versi terbaru, AWS CDK lihat [Memulai dengan AWS CDK di](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html) *Panduan Pengembang AWS Cloud Development Kit (AWS CDK) v2*.

## Menyebarkan aplikasi sampel AWS CDK
<a name="csharp-package-cdk-deploy"></a>

1. Buat direktori proyek untuk aplikasi sampel dan navigasikan ke dalamnya.

   ```
   mkdir hello-world
   cd hello-world
   ```

1. Menginisialisasi AWS CDK aplikasi baru dengan menjalankan perintah berikut.

   ```
   cdk init app --language csharp
   ```

   Perintah membuat file dan direktori berikut di direktori proyek Anda

   ```
   ├── README.md
   ├── cdk.json
   └── src
       ├── HelloWorld
       │   ├── GlobalSuppressions.cs
       │   ├── HelloWorld.csproj
       │   ├── HelloWorldStack.cs
       │   └── Program.cs
       └── HelloWorld.sln
   ```

1. Buka `src` direktori dan buat fungsi Lambda baru menggunakan .NET CLI. Ini adalah fungsi yang akan Anda gunakan menggunakan. AWS CDK Dalam contoh ini, Anda membuat fungsi Hello world bernama `HelloWorldLambda` menggunakan `lambda.EmptyFunction` template.

   ```
   cd src
   dotnet new lambda.EmptyFunction -n HelloWorldLambda
   ```

   Setelah langkah ini, struktur direktori Anda di dalam direktori proyek Anda akan terlihat seperti berikut.

   ```
   ├── README.md
   ├── cdk.json
   └── src
       ├── HelloWorld
       │   ├── GlobalSuppressions.cs
       │   ├── HelloWorld.csproj
       │   ├── HelloWorldStack.cs
       │   └── Program.cs
       ├── HelloWorld.sln
       └── HelloWorldLambda
           ├── src
           │   └── HelloWorldLambda
           │       ├── Function.cs
           │       ├── HelloWorldLambda.csproj
           │       ├── Readme.md
           │       └── aws-lambda-tools-defaults.json
           └── test
               └── HelloWorldLambda.Tests
                   ├── FunctionTest.cs
                   └── HelloWorldLambda.Tests.csproj
   ```

1. Buka `HelloWorldStack.cs` file dari `src/HelloWorld` direktori. Ganti isi file dengan kode berikut.

   ```
   using Amazon.CDK;
   using Amazon.CDK.AWS.Lambda;
   using Amazon.CDK.AWS.Logs;
   using Constructs;
   
   namespace CdkTest
   {
       public class HelloWorldStack : Stack
       {
           internal HelloWorldStack(Construct scope, string id, IStackProps props = null) : base(scope, id, props)
           {
               var buildOption = new BundlingOptions()
               {
                   Image = Runtime.DOTNET_8.BundlingImage,
                   User = "root",
                   OutputType = BundlingOutput.ARCHIVED,
                   Command = new string[]{
               "/bin/sh",
                   "-c",
                   " dotnet tool install -g Amazon.Lambda.Tools"+
                   " && dotnet build"+
                   " && dotnet lambda package --output-package /asset-output/function.zip"
                   }
               };
   
                var helloWorldLambdaFunction = new Function(this, "HelloWorldFunction", new FunctionProps
               {
                   Runtime = Runtime.DOTNET_8,
                   MemorySize = 1024,
                   LogRetention = RetentionDays.ONE_DAY,
                   Handler = "HelloWorldLambda::HelloWorldLambda.Function::FunctionHandler",
                   Code = Code.FromAsset("./src/HelloWorldLambda/src/HelloWorldLambda", new Amazon.CDK.AWS.S3.Assets.AssetOptions
                   {
                       Bundling = buildOption
                   }),
               });
           }
       }
   }
   ```

   Ini adalah kode untuk mengkompilasi dan menggabungkan kode aplikasi, serta definisi fungsi Lambda itu sendiri. `BundlingOptions` objek memungkinkan file zip dibuat, bersama dengan serangkaian perintah yang digunakan untuk menghasilkan konten file zip. Dalam hal ini, `dotnet lambda package` perintah digunakan untuk mengkompilasi dan menghasilkan file zip.

1. Untuk menyebarkan aplikasi Anda, jalankan perintah berikut.

   ```
   cdk deploy
   ```

1. Memanggil fungsi Lambda yang Anda gunakan menggunakan .NET Lambda CLI.

   ```
   dotnet lambda invoke-function HelloWorldFunction -p "hello world"
   ```

1. Setelah selesai menguji, Anda dapat menghapus sumber daya yang Anda buat, kecuali Anda ingin mempertahankannya. Jalankan perintah berikut untuk menghapus sumber daya Anda.

   ```
   cdk destroy
   ```

## Langkah selanjutnya
<a name="csharp-package-cdk-next"></a>

Untuk mempelajari selengkapnya tentang penggunaan AWS CDK untuk membangun dan menerapkan fungsi Lambda menggunakan.NET, lihat sumber daya berikut:
+ [Bekerja dengan AWS CDK di C \$1](https://docs.aws.amazon.com/cdk/v2/guide/work-with-cdk-csharp.html)
+ [Bangun, paket, dan publikasikan fungsi.NET C \$1 Lambda dengan CDK AWS](https://aws.amazon.com/blogs/modernizing-with-aws/build-package-publish-dotnet-csharp-lambda-functions-aws-cdk/)