

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

# AWS Lambda
<a name="lambda-index"></a>

Kembangkan dan terapkan fungsi C\$1 Lambda berbasis.NET Core Anda dengan. AWS Toolkit for Visual Studio AWS Lambda adalah layanan komputasi yang memungkinkan Anda menjalankan kode tanpa menyediakan atau mengelola server. Toolkit for Visual Studio AWS Lambda mencakup template proyek .NET Core untuk Visual Studio. 

Untuk informasi selengkapnya AWS Lambda, lihat Panduan Pengembang [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html).

Untuk informasi selengkapnya tentang.NET Core, lihat panduan Microsoft. [NET Core](https://docs.microsoft.com/en-us/dotnet/articles/core/). [Untuk prasyarat.NET Core dan petunjuk penginstalan untuk platform Windows, macOS, dan Linux, lihat .NET Core Downloads.](https://www.microsoft.com/net/download/core)

Topik berikut menjelaskan cara bekerja dengan AWS Lambda menggunakan Toolkit for Visual Studio.

**Topics**
+ [AWS Lambda Proyek Dasar](lambda-creating-project-in-visual-studio.md)
+ [AWS Lambda Proyek Dasar Membuat Gambar Docker](lambda-creating-project-docker-image.md)
+ [Tutorial: Membangun dan Menguji Aplikasi Tanpa Server dengan AWS Lambda](lambda-build-test-severless-app.md)
+ [Tutorial: Membuat Aplikasi Amazon Rekognition Lambda](lambda-rekognition-example.md)
+ [Tutorial: Menggunakan Amazon Logging Frameworks dengan AWS Lambda untuk Membuat Log Aplikasi](cw-log-frameworks.md)

# AWS Lambda Proyek Dasar
<a name="lambda-creating-project-in-visual-studio"></a>

Anda dapat membuat fungsi Lambda menggunakan template proyek Microsoft .NET Core, di file. AWS Toolkit for Visual Studio

## Buat Proyek Lambda Inti Visual Studio .NET
<a name="create-a-visual-studio-net-core-lam-project"></a>

Anda dapat menggunakan template dan cetak biru Lambda-Visual Studio untuk membantu mempercepat inisialisasi proyek Anda. Cetak biru Lambda berisi fungsi pra-tertulis yang menyederhanakan pembuatan fondasi proyek yang fleksibel.

**catatan**  
Layanan Lambda memiliki batas data pada jenis paket yang berbeda. *Untuk informasi rinci tentang batas data, lihat topik [kuota Lambda di Panduan](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) Pengguna Lambda AWS .*

**Untuk membuat proyek Lambda di Visual Studio**

1. Dari Visual Studio, perluas menu **File**, perluas **Baru**, lalu pilih **Project**.

1. Dari kotak dialog **Proyek Baru**, atur kotak drop-down **Bahasa**, **Platform**, dan **Jenis proyek** ke “Semua”, lalu ketik **aws lambda** di bidang **Pencarian**. Pilih template **Proyek AWS Lambda (.NET Core - C \$1**).

1. Di bidang **Nama**, masukkan**AWSLambdaSample**, tentukan **lokasi** file yang Anda inginkan, lalu pilih **Buat** untuk melanjutkan.

1. Dari halaman **Select Blueprint**, pilih cetak biru **Fungsi Kosong**, lalu pilih **Selesai** untuk membuat proyek Visual Studio.

## Tinjau File Proyek
<a name="review-the-project-files"></a>

Ada dua file proyek untuk ditinjau: `aws-lambda-tools-defaults.json` dan`Function.cs`.

Contoh berikut menunjukkan `aws-lambda-tools-defaults.json` file, yang secara otomatis dibuat sebagai bagian dari proyek Anda. Anda dapat mengatur opsi build dengan menggunakan bidang dalam file ini. 

**catatan**  
 Template proyek di Visual Studio berisi banyak bidang yang berbeda, perhatikan hal-hal berikut:  
**function-handler**: menentukan metode yang berjalan saat fungsi Lambda berjalan
Menentukan nilai di bidang **functiontion-handler** akan mengisi nilai tersebut di wizard Publish.
Jika Anda mengganti nama fungsi, kelas, atau perakitan maka Anda juga perlu memperbarui bidang yang sesuai dalam `aws-lambda-tools-defaults.json` file.

```
{
  "Information": [
    "This file provides default values for the deployment wizard inside Visual Studio and the AWS Lambda commands added to the .NET Core CLI.",
    "To learn more about the Lambda commands with the .NET Core CLI execute the following command at the command line in the project root directory.",
    "dotnet lambda help",
    "All the command line options for the Lambda command can be specified in this file."
  ],
  "profile": "default",
  "region": "us-west-2",
  "configuration": "Release",
  "function-architecture": "x86_64",
  "function-runtime": "dotnet8",
  "function-memory-size": 512,
  "function-timeout": 30,
  "function-handler": "AWSLambdaSample::AWSLambdaSample.Function::FunctionHandler"
}
```

Periksa `Function.cs` file. `Function.cs`mendefinisikan fungsi c \$1 untuk mengekspos sebagai fungsi Lambda. Ini `FunctionHandler` adalah fungsi Lambda yang berjalan saat fungsi Lambda berjalan. Dalam proyek ini, ada satu fungsi yang didefinisikan:`FunctionHandler`, yang memanggil `ToUpper()` teks input. 

Proyek Anda sekarang siap dipublikasikan ke Lambda.

## Penerbitan ke Lambda
<a name="publish-to-lam"></a>

Prosedur dan gambar berikut menunjukkan cara mengunggah fungsi Anda ke Lambda menggunakan. AWS Toolkit for Visual Studio

![\[Memanggil halaman fungsi pengujian\]](http://docs.aws.amazon.com/id_id/toolkit-for-visual-studio/latest/user-guide/images/uploadnet8.png)


**Menerbitkan fungsi Anda ke Lambda**

1. Arahkan ke AWS Explorer dengan memperluas **View** dan memilih **AWS Explorer**.

1. Di **Solution Explorer**, buka menu konteks untuk (klik kanan) proyek yang ingin Anda publikasikan, lalu pilih Publish to ** AWS Lambda untuk** membuka jendela **Upload Lambda Function**.

1. Dari jendela **Upload Lambda Function**, lengkapi kolom berikut:

   1. **Jenis Paket**: Pilih**Zip**. File ZIP akan dibuat sebagai hasil dari proses pembuatan dan akan diunggah ke Lambda. Atau, Anda dapat memilih **Package Type****Image**. [Tutorial: Proyek Lambda Dasar Membuat Gambar Docker](lambda-creating-project-docker-image.md) **menjelaskan cara mempublikasikan menggunakan Package Type.** **Image**

   1. **Lambda Runtime: Pilih** Lambda Runtime Anda dari menu tarik-turun.

   1. **Arsitektur**: Pilih radial untuk arsitektur pilihan Anda.

   1. **Nama Fungsi**: Pilih radial untuk **Buat fungsi baru**, lalu masukkan nama tampilan untuk instance Lambda Anda. Nama ini direferensikan oleh AWS Explorer dan Konsol Manajemen AWS display.

   1. **Handler**: Gunakan bidang ini untuk menentukan fungsi handler. Sebagai contoh: **AWSLambdaSample::AWSLambdaSample.Function::FunctionHandler**.

   1. *(Opsional)* **Deskripsi**: Masukkan teks deskriptif untuk ditampilkan dengan instance Anda, dari dalam. Konsol Manajemen AWS

   1. **Konfigurasi**: Pilih konfigurasi pilihan Anda dari menu tarik-turun.

   1. **Framework**: Pilih framework pilihan Anda dari menu drop-down.

   1. **Simpan pengaturan**: Pilih kotak ini untuk menyimpan pengaturan Anda saat ini `aws-lambda-tools-defaults.json` sebagai default untuk penerapan masa depan.

   1. Pilih **Berikutnya** untuk melanjutkan ke jendela **Advanced Function Details**.

1. Di jendela **Advanced Function Details**, lengkapi bidang-bidang berikut:

   1. **Nama Peran**: Pilih peran yang terkait dengan akun Anda. Peran ini menyediakan kredensi sementara untuk setiap panggilan AWS layanan yang dibuat oleh kode dalam fungsi. Jika Anda tidak memiliki peran, gulir untuk menemukan **Peran Baru berdasarkan Kebijakan AWS Terkelola** di pemilih tarik-turun, lalu pilih. **AWSLambdaBasicExecutionRole** Peran ini memiliki izin akses minimal. 
**catatan**  
Akun Anda harus memiliki izin untuk menjalankan ListPolicies tindakan IAM, atau daftar **Nama Peran** akan kosong dan Anda tidak akan dapat melanjutkan.

   1. *(Opsional)* Jika fungsi Lambda Anda mengakses sumber daya di VPC Amazon, pilih subnet dan grup keamanan.

   1. *(Opsional)* Tetapkan variabel lingkungan apa pun yang dibutuhkan fungsi Lambda Anda. Kunci secara otomatis dienkripsi oleh kunci layanan default yang gratis. Atau, Anda dapat menentukan AWS KMS kunci, yang dikenakan biaya. [KMS](https://aws.amazon.com/kms/) adalah layanan terkelola yang dapat Anda gunakan untuk membuat dan mengontrol kunci enkripsi yang digunakan untuk mengenkripsi data Anda. Jika Anda memiliki AWS KMS kunci, Anda dapat memilihnya dari daftar.

1. Pilih **Upload** untuk membuka jendela **Uploading Function** dan memulai proses upload.
**catatan**  
Halaman **Uploading Function** ditampilkan saat fungsi diunggah ke. AWS Agar wizard tetap terbuka setelah mengunggah sehingga Anda dapat melihat laporan, hapus **Wizard tutup otomatis jika berhasil diselesaikan** di bagian bawah formulir sebelum unggahan selesai.   
Setelah fungsi diunggah, fungsi Lambda Anda aktif. Halaman **Function:** view terbuka dan menampilkan konfigurasi fungsi Lambda baru Anda.

1. Dari tab **Test Function**, masukkan `hello lambda!` di kolom input teks dan kemudian pilih **Invoke untuk memanggil** fungsi Lambda Anda secara manual. Teks Anda muncul di tab **Respons**, dikonversi ke huruf besar. 
**catatan**  
Anda dapat membuka kembali tampilan **Function:** kapan saja dengan mengklik dua kali pada instance yang digunakan yang terletak di **AWS Explorer di bawah node**. **AWS Lambda**  
![\[Memanggil halaman fungsi pengujian\]](http://docs.aws.amazon.com/id_id/toolkit-for-visual-studio/latest/user-guide/images/invokeBasic.PNG)

1. *(Opsional)* Untuk mengonfirmasi bahwa Anda berhasil mempublikasikan fungsi Lambda Anda, masuk ke Konsol Manajemen AWS dan kemudian pilih Lambda. Konsol menampilkan semua fungsi Lambda yang Anda publikasikan, termasuk yang baru saja Anda buat.

## Membersihkan
<a name="cleanup-lam"></a>

Jika Anda tidak akan terus mengembangkan dengan contoh ini, hapus fungsi yang Anda terapkan sehingga Anda tidak ditagih untuk sumber daya yang tidak digunakan di akun Anda.

**catatan**  
Lambda secara otomatis memantau fungsi Lambda untuk Anda, melaporkan metrik melalui Amazon. CloudWatch Untuk memantau dan memecahkan masalah fungsi Anda, lihat topik [Pemecahan Masalah dan Pemantauan AWS Fungsi Lambda dengan Amazon CloudWatch](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-functions.html) di Panduan Pengembang. AWS Lambda 

**Untuk menghapus fungsi Anda**

1. Dari **AWS Explorer** memperluas **AWS Lambda**node.

1. Klik kanan instance yang Anda gunakan, lalu pilih **Hapus**.

# AWS Lambda Proyek Dasar Membuat Gambar Docker
<a name="lambda-creating-project-docker-image"></a>

Anda dapat menggunakan Toolkit for Visual Studio untuk menyebarkan fungsi AWS Lambda Anda sebagai image Docker. Menggunakan Docker, Anda memiliki kontrol lebih besar atas runtime Anda. Misalnya, Anda dapat memilih runtime kustom seperti.NET 8.0. Anda menerapkan gambar Docker Anda dengan cara yang sama seperti gambar kontainer lainnya. Tutorial ini sangat mirip dengan [Tutorial: Proyek Lambda Dasar](lambda-creating-project-in-visual-studio.md), dengan dua perbedaan:
+ Sebuah Dockerfile disertakan dalam proyek.
+ Konfigurasi penerbitan alternatif dipilih.

*Untuk informasi tentang gambar kontainer Lambda, lihat [Paket Penerapan Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html) di Panduan Pengembang.AWS Lambda *

Untuk informasi tambahan tentang bekerja dengan Lambda AWS Toolkit for Visual Studio, lihat [Menggunakan AWS Lambda Template dalam AWS Toolkit for Visual Studio topik di](lambda-index.md) Panduan Pengguna ini.

## Buat Proyek Lambda Inti Visual Studio .NET
<a name="create-a-visual-studio-net-core-lam-project"></a>

Anda dapat menggunakan template dan cetak biru Lambda Visual Studio untuk membantu mempercepat inisialisasi proyek Anda. Cetak biru Lambda berisi fungsi pra-tertulis yang menyederhanakan pembuatan fondasi proyek yang fleksibel.

**Untuk membuat proyek Visual Studio .NET Core Lambda**

1. Dari Visual Studio, perluas menu **File**, perluas **Baru**, lalu pilih **Project**.

1. Dari kotak dialog **Proyek Baru**, atur kotak drop-down **Bahasa**, **Platform**, dan **Jenis proyek** ke “Semua”, lalu ketik **aws lambda** di bidang **Pencarian**. Pilih template **Proyek AWS Lambda (.NET Core - C \$1**).

1. Di bidang **Nama Proyek**, masukkan**AWSLambdaDocker**, tentukan **lokasi** file Anda, lalu pilih **Buat**.

1. Pada halaman **Select Blueprint**, pilih blueprint **.NET 8 (Container Image)**, lalu pilih **Finish** untuk membuat proyek Visual Studio. Anda sekarang dapat meninjau struktur dan kode proyek.

## Meninjau File Proyek
<a name="review-the-project-files"></a>

Bagian berikut memeriksa tiga file proyek yang dibuat oleh cetak **biru.NET 8 (Container Image)**:

1. `Dockerfile`

1. `aws-lambda-tools-defaults.json`

1. `Function.cs`

### 1. Dockerfile
<a name="dockerfile"></a>

A `Dockerfile` melakukan tiga tindakan utama:
+ `FROM`: Menetapkan gambar dasar untuk digunakan untuk gambar ini. Gambar dasar ini menyediakan .NET Runtime, Lambda runtime, dan skrip shell yang menyediakan titik masuk untuk proses Lambda.NET.
+ `WORKDIR`: Menetapkan direktori kerja internal gambar sebagai`/var/task`.
+ `COPY`: Akan menyalin file yang dihasilkan dari proses pembuatan dari lokasi lokalnya ke direktori kerja gambar.

Berikut ini adalah `Dockerfile` tindakan opsional yang dapat Anda tentukan:
+ `ENTRYPOINT`: Gambar dasar sudah menyertakan`ENTRYPOINT`, yang merupakan proses start-up yang dijalankan saat gambar dimulai. Jika Anda ingin menentukan sendiri, maka Anda mengesampingkan titik masuk dasar itu.
+ `CMD`: Menginstruksikan kode kustom AWS mana yang ingin Anda eksekusi. Ini mengharapkan nama yang sepenuhnya memenuhi syarat untuk metode kustom Anda. Baris ini perlu disertakan langsung di Dockerfile atau dapat ditentukan selama proses publikasi. 

  ```
  # Example of alternative way to specify the Lambda target method rather than during the publish process.
  CMD [ "AWSLambdaDocker::AWSLambdaDocker.Function::FunctionHandler"]
  ```

Berikut ini adalah contoh dari Dockerfile yang dibuat oleh cetak biru.NET 8 (Container Image).

```
FROM public.ecr.aws/lambda/dotnet:8

WORKDIR /var/task

# This COPY command copies the .NET Lambda project's build artifacts from the host machine into the image. 
# The source of the COPY should match where the .NET Lambda project publishes its build artifacts. If the Lambda function is being built 
# with the AWS .NET Lambda Tooling, the `--docker-host-build-output-dir` switch controls where the .NET Lambda project
# will be built. The .NET Lambda project templates default to having `--docker-host-build-output-dir`
# set in the aws-lambda-tools-defaults.json file to "bin/Release/lambda-publish".
#
# Alternatively Docker multi-stage build could be used to build the .NET Lambda project inside the image.
# For more information on this approach checkout the project's README.md file.
COPY "bin/Release/lambda-publish"  .
```

### 2. aws-lambda-tools-defaults.json
<a name="aws-lambda-tools-defaults"></a>

`aws-lambda-tools-defaults.json`File ini digunakan untuk menentukan nilai default untuk wizard penyebaran Toolkit for Visual Studio dan .NET Core CLI. Daftar berikut menjelaskan bidang yang dapat Anda atur dalam `aws-lambda-tools-defaults.json` file Anda.
+ `profile`: menetapkan AWS profil Anda.
+ `region`: menetapkan AWS wilayah tempat sumber daya Anda disimpan.
+ `configuration`: menetapkan konfigurasi yang digunakan untuk mempublikasikan fungsi Anda.
+ `package-type`: menyetel tipe paket penerapan ke gambar kontainer atau arsip file.zip.
+ `function-memory-size`: mengatur alokasi memori untuk fungsi Anda dalam MB.
+ `function-timeout`: Timeout adalah jumlah waktu maksimum dalam hitungan detik yang dapat dijalankan oleh fungsi Lambda. Anda dapat menyesuaikan ini dengan penambahan 1 detik hingga nilai maksimum 15 menit.
+ `docker-host-build-output-dir`: menyetel direktori keluaran dari proses pembuatan yang berkorelasi dengan instruksi di. `Dockerfile`
+ `image-command`: adalah nama yang sepenuhnya memenuhi syarat untuk metode Anda, kode yang Anda inginkan untuk menjalankan fungsi Lambda. Sintaksnya adalah:`{Assembly}::{Namespace}.{ClassName}::{MethodName}`. Untuk informasi selengkapnya, lihat [Tanda tangan Handler](https://docs.aws.amazon.com/lambda/latest/dg/csharp-handler.html#csharp-handler-signatures). Pengaturan `image-command` di sini telah mengisi nilai ini di wizard Publish Visual Studio nanti. 

Berikut ini adalah contoh dari sebuah aws-lambda-tools-defaults .json yang dibuat oleh cetak biru.NET 8 (Container Image).

```
{
  "Information": [
    "This file provides default values for the deployment wizard inside Visual Studio and the AWS Lambda commands added to the .NET Core CLI.",
    "To learn more about the Lambda commands with the .NET Core CLI execute the following command at the command line in the project root directory.",
    "dotnet lambda help",
    "All the command line options for the Lambda command can be specified in this file."
  ],
  "profile": "default",
  "region": "us-west-2",
  "configuration": "Release",
  "package-type": "image",
  "function-memory-size": 512,
  "function-timeout": 30,
  "image-command": "AWSLambdaDocker::AWSLambdaDocker.Function::FunctionHandler",
  "docker-host-build-output-dir": "./bin/Release/lambda-publish"
}
```

### 3. Function.cs
<a name="w2aac15c45c16c17c21"></a>

`Function.cs`File mendefinisikan fungsi c \$1 yang akan diekspos sebagai fungsi Lambda. `FunctionHandler`Ini adalah fungsi Lambda yang berjalan saat fungsi Lambda berjalan. Dalam proyek ini, `FunctionHandler` panggilan `ToUpper()` pada teks input. 

## Publikasikan ke Lambda
<a name="publish-to-lam"></a>

Gambar Docker yang dihasilkan oleh proses pembuatan diunggah ke Amazon Elastic Container Registry (Amazon ECR) Registry ECR). Amazon ECR adalah registri kontainer Docker yang dikelola sepenuhnya yang Anda gunakan untuk menyimpan, mengelola, dan menyebarkan gambar kontainer Docker. Amazon ECR menghosting gambar, yang kemudian dirujuk oleh Lambda untuk menyediakan fungsionalitas Lambda yang diprogram saat dipanggil. 

**Untuk mempublikasikan fungsi Anda ke Lambda**

1. Dari **Solution Explorer**, buka menu konteks untuk (klik kanan) proyek, lalu pilih **Publish AWS Lambda untuk** membuka jendela **Upload Lambda Function**.

1. Dari halaman **Upload Lambda Function**, lakukan hal berikut:  
![\[Unggah layar untuk mempublikasikan fungsi Lambda berbasis gambar ke AWS\]](http://docs.aws.amazon.com/id_id/toolkit-for-visual-studio/latest/user-guide/images/lambda-upload-docker-03192024.png)

   1.  Untuk **Package Type**, **Image** telah secara otomatis dipilih sebagai **Package Type** Anda karena wizard publikasi mendeteksi sebuah `Dockerfile` dalam proyek Anda. 

   1. Untuk **Nama Fungsi**, masukkan nama tampilan untuk instance Lambda Anda. Nama ini adalah nama referensi yang ditampilkan di AWS Explorer di Visual Studio dan Konsol Manajemen AWS.

   1.  Untuk **Deskripsi**, masukkan teks untuk ditampilkan dengan instance Anda di Konsol Manajemen AWS.

   1. Untuk **Image Command**, masukkan path yang sepenuhnya memenuhi syarat ke metode yang Anda inginkan untuk menjalankan fungsi Lambda: **AWSLambdaDocker::AWSLambdaDocker.Function::FunctionHandler** 
**catatan**  
Nama metode apa pun yang dimasukkan di sini akan mengganti instruksi CMD apa pun di dalam Dockerfile. Memasuki **Perintah Gambar** hanya opsional JIKA Anda `Dockerfile` menyertakan a `CMD` untuk menginstruksikan cara meluncurkan fungsi Lambda.

   1. Untuk **Image Repo**, masukkan nama Amazon Elastic Container Registry yang baru atau yang sudah ada. Gambar Docker yang dibuat oleh proses pembuatan diunggah ke registri ini. Definisi Lambda yang sedang diterbitkan akan merujuk pada gambar Amazon ECR itu.

   1.  Untuk **Tag Gambar**, masukkan tag Docker untuk diasosiasikan dengan gambar Anda di repositori. 

   1. Pilih **Berikutnya**.

1. Pada halaman **Detail Fungsi Lanjutan**, di **Nama Peran** pilih peran yang terkait dengan akun Anda. Peran ini digunakan untuk memberikan kredensyal sementara untuk setiap panggilan Amazon Web Services yang dibuat oleh kode dalam fungsi. Jika Anda tidak memiliki peran, pilih Peran **Baru berdasarkan Kebijakan AWS Terkelola**, lalu pilih **AWSLambdaBasicExecutionRole**. 
**catatan**  
Akun Anda harus memiliki izin untuk menjalankan ListPolicies tindakan IAM, atau daftar **Nama Peran** akan kosong.

1. Pilih **Unggah** untuk memulai proses pengunggahan dan penerbitan.
**catatan**  
Halaman **Uploading Function** ditampilkan saat fungsi sedang mengunggah. Proses publikasi kemudian membangun gambar berdasarkan parameter konfigurasi, membuat repositori Amazon ECR jika perlu, mengunggah gambar ke dalam repositori, dan membuat Lambda yang mereferensikan repo itu dengan gambar itu.   
Setelah fungsi diunggah, halaman **Fungsi** akan terbuka dan menampilkan konfigurasi fungsi Lambda baru Anda. 

1. **Untuk memanggil fungsi Lambda secara manual, pada tab **Test** Function, `hello image based lambda` masukkan ke bidang input teks bebas permintaan dan kemudian pilih Invoke.** **Teks Anda, dikonversi ke huruf besar, akan muncul di Respons.**   
![\[Tab Test Function dari halaman tampilan Fungsi yang diterbitkan memiliki tombol untuk memanggil metode Lambda secara manual.\]](http://docs.aws.amazon.com/id_id/toolkit-for-visual-studio/latest/user-guide/images/lambda-invoke-docker-03192024.png)

1. **Untuk melihat repositori, di **AWS Explorer**, di bawah **Amazon Elastic Container Service**, pilih Repositori.**

   Anda dapat membuka kembali tampilan **Function:** kapan saja dengan mengklik dua kali pada instance yang digunakan yang terletak di **AWS Explorer di bawah node**. **AWS Lambda**
**catatan**  
Jika jendela AWS Explorer Anda tidak terbuka, Anda dapat merambungkannya melalui **View** -> **AWS Explorer**

1. Perhatikan opsi konfigurasi khusus gambar tambahan pada tab **Konfigurasi**. Tab ini menyediakan cara untuk mengganti`ENTRYPOINT`,`CMD`, dan `WORKDIR` itu mungkin telah ditentukan dalam Dockerfile. **Deskripsi adalah deskripsi** yang Anda masukkan (jika ada) selama upload/publish.

## Membersihkan
<a name="cleanup-lam"></a>

Jika Anda tidak akan terus mengembangkan dengan contoh ini, ingatlah untuk menghapus fungsi dan gambar ECR yang digunakan sehingga Anda tidak ditagih untuk sumber daya yang tidak digunakan di akun Anda. 
+ Fungsi dapat dihapus dengan mengklik kanan instance yang Anda gunakan yang terletak di **AWS Explorer** di bawah node. **AWS Lambda** 
+ **Repositori dapat dihapus di **AWS Explorer** di bawah **Amazon Elastic Container Service** -> Repositori.**

## Langkah Berikutnya
<a name="next-steps-lam"></a>

Untuk informasi tentang membuat dan menguji gambar Lambda, lihat [Menggunakan Gambar Kontainer dengan Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-images.html).

[Untuk informasi tentang penerapan gambar kontainer, izin, dan pengaturan konfigurasi utama, lihat Mengonfigurasi Fungsi.](https://docs.aws.amazon.com/lambda/latest/dg/configuration-images.html)

# Tutorial: Membangun dan Menguji Aplikasi Tanpa Server dengan AWS Lambda
<a name="lambda-build-test-severless-app"></a>

Anda dapat membangun aplikasi Lambda tanpa server dengan menggunakan template. AWS Toolkit for Visual Studio Template proyek Lambda menyertakan satu untuk **Aplikasi AWS Tanpa Server, yang merupakan AWS Toolkit for Visual Studio implementasi dari Model Aplikasi AWS ** [Tanpa Server](https://github.com/awslabs/serverless-application-model) (SAM).AWS Dengan menggunakan jenis proyek ini, Anda dapat mengembangkan kumpulan AWS Lambda fungsi dan menyebarkannya dengan AWS sumber daya yang diperlukan sebagai keseluruhan aplikasi, menggunakan AWS CloudFormation untuk mengatur penyebaran.

Untuk prasyarat dan informasi tentang pengaturan AWS Toolkit for Visual Studio, lihat Menggunakan [Template AWS Lambda di Toolkit for](lambda-index.md) Visual Studio. AWS 

**Topics**
+ [Buat Proyek Aplikasi AWS Tanpa Server Baru](#create-a-new-aws-serverless-application-project)
+ [Meninjau file Aplikasi Tanpa Server](#examine-the-files-in-the-serverless-application)
+ [Menerapkan Aplikasi Tanpa Server](#deploy-the-serverless-application)
+ [Uji Aplikasi Tanpa Server](#test-the-serverless-application)

## Buat Proyek Aplikasi AWS Tanpa Server Baru
<a name="create-a-new-aws-serverless-application-project"></a>

AWS Proyek Aplikasi Tanpa Server membuat fungsi Lambda dengan template tanpa server. CloudFormation CloudFormation template memungkinkan Anda untuk menentukan sumber daya tambahan seperti database, menambahkan peran IAM, dan menyebarkan beberapa fungsi pada satu waktu. Ini berbeda dari proyek AWS Lambda, yang berfokus pada pengembangan dan penerapan fungsi Lambda tunggal.

Prosedur berikut menjelaskan cara membuat Proyek Aplikasi AWS Tanpa Server baru.

1. Dari Visual Studio, perluas menu **File**, perluas **Baru**, lalu pilih **Project**.

1. Di kotak dialog **Proyek Baru**, pastikan bahwa kotak drop-down **Bahasa**, **Platform**, dan **Jenis Proyek** diatur ke “Semua...” dan masukkan **aws lambda** di bidang **Pencarian**.

1. Pilih template **AWS Serverless Application with Tests (.NET Core - C\$1**).
**catatan**  
Ada kemungkinan bahwa template **Aplikasi AWS Tanpa Server dengan Tes (.NET Core - C\$1)** mungkin tidak terisi di bagian atas hasil.

1. Klik **Berikutnya** untuk membuka dialog **Configure your new project**.

1. Dari dialog **Konfigurasi proyek baru Anda**, masukkan **ServerlessPowertools** untuk **Nama**, lalu lengkapi bidang yang tersisa sesuai preferensi Anda. Pilih **Buat** tombol untuk melanjutkan ke dialog **Select Blueprint**.

1. Dari dialog **Select Blueprint** pilih **Powertools untuk AWS Lambda** cetak biru, lalu pilih **Selesai** untuk membuat proyek Visual Studio.

## Meninjau file Aplikasi Tanpa Server
<a name="examine-the-files-in-the-serverless-application"></a>

Bagian berikut memberikan tampilan rinci pada tiga file Aplikasi Tanpa Server yang dibuat untuk proyek Anda:

1. template tanpa server

1. Functions.cs

1. aws-lambda-tools-defaults.json

### 1. tanpa servers.template
<a name="blogcs"></a>

`serverless.template`File adalah AWS CloudFormation template untuk mendeklarasikan fungsi Tanpa Server dan sumber daya lainnya. AWS File yang disertakan dengan proyek ini berisi deklarasi untuk satu fungsi Lambda yang akan diekspos melalui Amazon API Gateway sebagai `HTTP *Get*` operasi. Anda dapat mengedit template ini untuk menyesuaikan fungsi yang ada atau menambahkan lebih banyak fungsi dan sumber daya lain yang diperlukan oleh aplikasi Anda.

Berikut ini adalah contoh `serverless.template` file:

```
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Transform": "AWS::Serverless-2016-10-31",
  "Description": "An AWS Serverless Application.",
  "Resources": {
    "Get": {
      "Type": "AWS::Serverless::Function",
      "Properties": {
         "Architectures": [
            "x86_64"
            ],
         "Handler": "ServerlessPowertools::ServerlessPowertools.Functions::Get",
         "Runtime": "dotnet8",
         "CodeUri": "",
         "MemorySize": 512,
         "Timeout": 30,
         "Role": null,
         "Policies": [
            "AWSLambdaBasicExecutionRole"
            ],
         "Environment": {
            "Variables": {
               "POWERTOOLS_SERVICE_NAME": "ServerlessGreeting",
               "POWERTOOLS_LOG_LEVEL": "Info",
               "POWERTOOLS_LOGGER_CASE": "PascalCase",
               "POWERTOOLS_TRACER_CAPTURE_RESPONSE": true,
               "POWERTOOLS_TRACER_CAPTURE_ERROR": true,
               "POWERTOOLS_METRICS_NAMESPACE": "ServerlessGreeting"
               }
            },
         "Events": {
            "RootGet": {
               "Type": "Api",
               "Properties": {
                  "Path": "/",
                  "Method": "GET"
                  }
               }
            }
         }
      }
   },
  "Outputs": {
    "ApiURL": {
      "Description": "API endpoint URL for Prod environment",
      "Value": {
        "Fn::Sub": "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/"
      }
    }
  }
}
```

Perhatikan bahwa banyak bidang `...AWS:: Serverless::Function...` deklarasi mirip dengan bidang penyebaran proyek Lambda. Powertools Logging, Metrics, dan Tracing dikonfigurasi melalui variabel lingkungan berikut:
+ POWERTOOLS\$1SERVICE\$1NAME= ServerlessGreeting
+ PowerTools\$1log\$1level=Info
+ POWERTOOLS\$1LOGGER\$1CASE = PascalCase
+ PowerTools\$1TRACER\$1CAPTURE\$1RESPONSE=Benar
+ PowerTools\$1TRACER\$1CAPTURE\$1ERROR=Benar
+ POWERTOOLS\$1METRICS\$1NAMESPACE= ServerlessGreeting

Untuk definisi dan detail tambahan tentang variabel lingkungan, lihat situs web [Powertools untuk AWS Lambda referensi](https://awslabs.github.io/aws-lambda-powertools-dotnet/references/).

### 2. Functions.cs
<a name="functionscs"></a>

`Functions.cs`adalah file kelas yang berisi metode C \$1 yang dipetakan ke satu fungsi yang dideklarasikan dalam file template. Fungsi Lambda merespons `HTTP Get` metode dari API Gateway. Berikut ini adalah contoh `Functions.cs` file:

```
public class Functions
{
    [Logging(LogEvent = true, CorrelationIdPath = CorrelationIdPaths.ApiGatewayRest)]
    [Metrics(CaptureColdStart = true)]
    [Tracing(CaptureMode = TracingCaptureMode.ResponseAndError)]
    public APIGatewayProxyResponse Get(APIGatewayProxyRequest request, ILambdaContext context)
    {
        Logger.LogInformation("Get Request");

        var greeting = GetGreeting();

        var response = new APIGatewayProxyResponse
        {
            StatusCode = (int)HttpStatusCode.OK,
            Body = greeting,
            Headers = new Dictionary (string, string) { { "Content-Type", "text/plain" } }
        };

        return response;
    }

    [Tracing(SegmentName = "GetGreeting Method")]
    private static string GetGreeting()
    {
        Metrics.AddMetric("GetGreeting_Invocations", 1, MetricUnit.Count);

        return "Hello Powertools for AWS Lambda (.NET)";
    }
}
```

### 3. aws-lambda-tools-defaults.json
<a name="functionscs"></a>

`aws-lambda-tools-defaults.json`menyediakan nilai default untuk wizard AWS penerapan di dalam Visual Studio dan AWS Lambda perintah yang ditambahkan ke.NET Core CLI. Berikut ini adalah contoh `aws-lambda-tools-defaults.json` file yang disertakan dengan proyek ini:

```
{
  "profile": "Default",
  "region": "us-east-1",
  "configuration": "Release",
  "s3-prefix": "ServerlessPowertools/",
  "template": "serverless.template",
  "template-parameters": ""
}
```

## Menerapkan Aplikasi Tanpa Server
<a name="deploy-the-serverless-application"></a>

Untuk menerapkan aplikasi tanpa server Anda, selesaikan langkah-langkah berikut

1. Dari **Solution Explorer**, buka menu konteks untuk (klik kanan) proyek Anda dan pilih **Publish to AWS Lambda untuk** membuka dialog **Publish AWS Serverless** Application.

1. Dari dialog **Publish AWS Serverless Application**, masukkan nama untuk wadah CloudFormation tumpukan di bidang **Stack Name**.

1. **Di bidang **S3 Bucket**, pilih bucket Amazon S3 yang akan diunggah bundel aplikasi Anda atau pilih New...** tombol dan masukkan nama bucket Amazon S3 baru. Kemudian pilih **Publish** to publish untuk menyebarkan aplikasi Anda.
**catatan**  
 CloudFormation Tumpukan dan Bucket Amazon S3 Anda harus ada di wilayah yang sama AWS . Pengaturan yang tersisa untuk proyek Anda ditentukan dalam `serverless.template` file.  
![\[Gambar dialog Publikasikan Aplikasi AWS Tanpa Server.\]](http://docs.aws.amazon.com/id_id/toolkit-for-visual-studio/latest/user-guide/images/lambda-upload-serverless-03192024.png)

1. Jendela tampilan **Stack** terbuka selama proses penerbitan, saat penerapan selesai, bidang **Status** menampilkan:`CREATE_COMPLETE`.  
![\[Gambar jendela tampilan tumpukan penyebaran di studio visual.\]](http://docs.aws.amazon.com/id_id/toolkit-for-visual-studio/latest/user-guide/images/lambda-upload-stackview-03192024.png)

## Uji Aplikasi Tanpa Server
<a name="test-the-serverless-application"></a>

Ketika pembuatan tumpukan selesai, Anda dapat melihat aplikasi Anda menggunakan URL **AWS Tanpa Server**. Jika Anda telah menyelesaikan tutorial ini tanpa menambahkan fungsi atau parameter tambahan, mengakses URL AWS tanpa server Anda akan menampilkan frasa berikut di browser web Anda: `Hello Powertools for AWS Lambda (.NET)`

# Tutorial: Membuat Aplikasi Amazon Rekognition Lambda
<a name="lambda-rekognition-example"></a>

Tutorial ini menunjukkan cara membuat aplikasi Lambda yang menggunakan Amazon Rekognition untuk menandai objek Amazon S3 dengan label yang terdeteksi.

Untuk prasyarat dan informasi tentang pengaturan AWS Toolkit for Visual Studio, lihat Menggunakan [Template AWS Lambda di Toolkit for](lambda-index.md) Visual Studio. AWS 

## Buat Proyek Rekognition Gambar Lambda Inti Visual Studio .NET
<a name="create-a-visual-studio-net-core-lam-image-rekognition-project"></a>

Prosedur berikut menjelaskan cara membuat aplikasi Amazon Rekognition Lambda dari aplikasi. AWS Toolkit for Visual Studio

**catatan**  
Setelah pembuatan, aplikasi Anda memiliki solusi dengan dua proyek: proyek sumber yang berisi kode fungsi Lambda Anda untuk diterapkan ke Lambda, dan proyek pengujian menggunakan XUnit untuk menguji fungsi Anda secara lokal.  
Terkadang Visual Studio tidak dapat menemukan semua NuGet referensi untuk proyek Anda. Ini karena cetak biru memerlukan dependensi yang harus diambil dari. NuGet Ketika proyek baru dibuat, Visual Studio hanya menarik referensi lokal dan bukan referensi jarak jauh dari NuGet. Untuk memperbaiki NuGet kesalahan: klik kanan referensi Anda dan pilih **Pulihkan Paket**.

1. Dari Visual Studio, perluas menu **File**, perluas **Baru**, lalu pilih **Project**.

1. Di kotak dialog **Proyek Baru**, pastikan bahwa kotak drop-down **Bahasa**, **Platform**, dan **Jenis Proyek** diatur ke “Semua...” dan masukkan **aws lambda** di bidang **Pencarian**.

1. Pilih template **AWS Lambda with Tests (.NET Core - C \$1)**.

1. Klik **Berikutnya** untuk membuka dialog **Configure your new project**.

1. Dari dialog **Konfigurasi proyek baru Anda**, masukkan "ImageRekognition" untuk **Nama**, lalu lengkapi bidang yang tersisa sesuai preferensi Anda. Pilih **Buat** tombol untuk melanjutkan ke dialog **Select Blueprint**.

1. Dari dialog **Select Blueprint**, pilih cetak biru **Deteksi Label Gambar**, lalu pilih **Selesai** untuk membuat proyek Visual Studio.
**catatan**  
Cetak biru ini menyediakan kode untuk mendengarkan peristiwa Amazon S3 dan menggunakan Amazon Rekognition untuk mendeteksi label dan menambahkannya ke objek S3 sebagai tag.

## Meninjau File Proyek
<a name="examine-the-files"></a>

Bagian berikut memeriksa file-file proyek ini:

1. `Function.cs`

1. `aws-lambda-tools-defaults.json`

### 1. Function.cs
<a name="functioncs"></a>

Di dalam `Function.cs` file, segmen kode pertama adalah atribut assembly, yang terletak di bagian atas file. Secara default, Lambda hanya menerima parameter input dan mengembalikan tipe tipe. `System.IO.Stream` Anda harus mendaftarkan serializer untuk menggunakan kelas yang diketik untuk parameter input dan tipe pengembalian. Atribut assembly mendaftarkan serializer Lambda JSON, yang `Newtonsoft.Json` digunakan untuk mengonversi aliran ke kelas yang diketik. Anda dapat mengatur serializer di tingkat perakitan atau metode.

Berikut ini adalah contoh atribut assembly:

```
// Assembly attribute to enable the Lambda function's JSON input to be converted into a .NET class.
[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))]
```

Kelas ini memiliki dua konstruktor. Yang pertama adalah konstruktor default yang digunakan saat Lambda memanggil fungsi Anda. Konstruktor ini menciptakan klien layanan Amazon S3 dan Amazon Rekognition. Konstruktor juga mengambil AWS kredensi untuk klien ini dari peran IAM yang Anda tetapkan ke fungsi saat Anda menerapkannya. AWS Wilayah untuk klien diatur ke wilayah yang menjalankan fungsi Lambda Anda. Dalam cetak biru ini, Anda hanya ingin menambahkan tag ke objek Amazon S3 jika layanan Amazon Rekognition memiliki tingkat kepercayaan minimum tentang label tersebut. Konstruktor ini memeriksa variabel lingkungan `MinConfidence` untuk menentukan tingkat kepercayaan yang dapat diterima. Anda dapat mengatur variabel lingkungan ini saat Anda menerapkan fungsi Lambda.

Berikut ini adalah contoh konstruktor kelas pertama di`Function.cs`:

```
public Function()
{
    this.S3Client = new AmazonS3Client();
    this.RekognitionClient = new AmazonRekognitionClient();

    var environmentMinConfidence = System.Environment.GetEnvironmentVariable(MIN_CONFIDENCE_ENVIRONMENT_VARIABLE_NAME);
    if(!string.IsNullOrWhiteSpace(environmentMinConfidence))
    {
        float value;
        if(float.TryParse(environmentMinConfidence, out value))
        {
            this.MinConfidence = value;
            Console.WriteLine($"Setting minimum confidence to {this.MinConfidence}");
        }
        else
        {
            Console.WriteLine($"Failed to parse value {environmentMinConfidence} for minimum confidence. Reverting back to default of {this.MinConfidence}");
        }
    }
    else
    {
        Console.WriteLine($"Using default minimum confidence of {this.MinConfidence}");
    }
}
```

Contoh berikut menunjukkan bagaimana konstruktor kedua dapat digunakan untuk pengujian. Proyek pengujian mengonfigurasi klien S3 dan Rekognition sendiri dan meneruskannya di:

```
public Function(IAmazonS3 s3Client, IAmazonRekognition rekognitionClient, float minConfidence)
{
    this.S3Client = s3Client;
    this.RekognitionClient = rekognitionClient;
    this.MinConfidence = minConfidence;
}
```

Berikut ini adalah contoh `FunctionHandler` metode di dalam `Function.cs` file.

```
public async Task FunctionHandler(S3Event input, ILambdaContext context)
{
    foreach(var record in input.Records)
    {
        if(!SupportedImageTypes.Contains(Path.GetExtension(record.S3.Object.Key)))
        {
            Console.WriteLine($"Object {record.S3.Bucket.Name}:{record.S3.Object.Key} is not a supported image type");
            continue;
        }

        Console.WriteLine($"Looking for labels in image {record.S3.Bucket.Name}:{record.S3.Object.Key}");
        var detectResponses = await this.RekognitionClient.DetectLabelsAsync(new DetectLabelsRequest
        {
            MinConfidence = MinConfidence,
            Image = new Image
            {
                S3Object = new Amazon.Rekognition.Model.S3Object
                {
                    Bucket = record.S3.Bucket.Name,
                    Name = record.S3.Object.Key
                }
            }
        });

        var tags = new List();
        foreach(var label in detectResponses.Labels)
        {
            if(tags.Count < 10)
            {
                Console.WriteLine($"\tFound Label {label.Name} with confidence {label.Confidence}");
                tags.Add(new Tag { Key = label.Name, Value = label.Confidence.ToString() });
            }
            else
            {
                Console.WriteLine($"\tSkipped label {label.Name} with confidence {label.Confidence} because maximum number of tags reached");
            }
        }

        await this.S3Client.PutObjectTaggingAsync(new PutObjectTaggingRequest
        {
            BucketName = record.S3.Bucket.Name,
            Key = record.S3.Object.Key,
            Tagging = new Tagging
            {
                TagSet = tags
            }
        });
    }
    return;
}
```

 `FunctionHandler`adalah metode yang dipanggil Lambda setelah membangun instance. Perhatikan bahwa parameter input adalah tipe `S3Event` dan bukan a`Stream`. Anda dapat melakukan ini karena serializer Lambda JSON yang terdaftar. `S3Event`Berisi semua informasi tentang acara yang dipicu di Amazon S3. Fungsi loop melalui semua objek S3 yang merupakan bagian dari acara dan memberitahu Rekognition untuk mendeteksi label. Setelah label terdeteksi, mereka ditambahkan sebagai tag ke objek S3.

**catatan**  
Kode berisi panggilan ke`Console.WriteLine()`. Saat fungsi berjalan di Lambda, semua panggilan untuk `Console.WriteLine()` mengalihkan ke Amazon Logs. CloudWatch 

### 2. aws-lambda-tools-defaults.json
<a name="toolsdefaults"></a>

`aws-lambda-tools-defaults.json`File berisi nilai default yang telah ditetapkan cetak biru untuk mengisi beberapa bidang di wizard penerapan. Ini juga membantu dalam mengatur opsi baris perintah untuk integrasi dengan.NET Core CLI.

Untuk mengakses integrasi.NET Core CLI, navigasikan ke direktori dan ketik proyek fungsi. **dotnet lambda help**

**catatan**  
Penangan fungsi menunjukkan metode apa yang dipanggil Lambda sebagai respons terhadap fungsi yang dipanggil. Format bidang ini adalah:`<assembly-name>::<full-type-name>::<method-name>`. Namespace harus disertakan dengan nama tipe.

## Menyebarkan Fungsi
<a name="deploy-the-function"></a>

Prosedur berikut menjelaskan cara menerapkan fungsi Lambda Anda.

1. **Dari **Solution Explorer**, klik kanan proyek Lambda dan **pilih Publish to AWS Lambda untuk** membuka jendela Upload to. AWS Lambda**
**catatan**  
Nilai preset diambil dari file. `aws-lambda-tools-defaults.json`

1. Dari AWS Lambda jendela **Upload to**, masukkan nama ke bidang **Function Name**, lalu pilih tombol **Next** untuk maju ke jendela **Advanced Function Details**.
**catatan**  
Contoh ini, menggunakan **Nama Fungsi****ImageRekognition**.  
![\[AWS Lambda function upload interface with package type, runtime, and configuration options.\]](http://docs.aws.amazon.com/id_id/toolkit-for-visual-studio/latest/user-guide/images/lambda-upload-imgrek-03192024.png)

1. Dari jendela **Detail Fungsi Lanjutan**, pilih peran IAM yang memberikan izin bagi kode Anda untuk mengakses sumber daya Amazon S3 dan Amazon Rekognition Anda.
**catatan**  
Jika Anda mengikuti contoh ini, pilih `AWSLambda_FullAccess` peran.

1. Setel variabel lingkungan `MinConfidence` ke 60, lalu pilih **Unggah** untuk meluncurkan proses penerapan. Proses penerbitan selesai ketika tampilan **Fungsi** ditampilkan di **AWS Explorer**.  
![\[AWS Lambda function configuration interface showing permissions, execution, and environment settings.\]](http://docs.aws.amazon.com/id_id/toolkit-for-visual-studio/latest/user-guide/images/lambda-upload-imgrek-advanced-03192024.png)

1. **Setelah penerapan berhasil, konfigurasikan Amazon S3 untuk mengirim peristiwanya ke fungsi baru Anda dengan menavigasi ke tab Sumber Peristiwa.**

1. Dari tab **Sumber Acara**, pilih tombol **Tambah**, lalu pilih bucket Amazon S3 untuk terhubung dengan fungsi Lambda Anda.
**catatan**  
Bucket harus berada di AWS wilayah yang sama dengan fungsi Lambda Anda.

## Uji Fungsinya
<a name="test-the-function"></a>

Sekarang setelah fungsi tersebut diterapkan dan bucket S3 dikonfigurasi sebagai sumber acara untuknya, buka browser bucket S3 dari **AWS Explorer** untuk bucket yang Anda pilih. Kemudian unggah beberapa gambar.

Ketika unggahan selesai, Anda dapat mengonfirmasi bahwa fungsi Anda berjalan dengan melihat log dari tampilan fungsi Anda. Atau, klik kanan gambar di browser bucket dan pilih **Properties**. Pada tab **Tag**, Anda dapat melihat tag yang diterapkan ke objek Anda.

![\[Properties window showing metadata tags for an image file in a cloud storage bucket.\]](http://docs.aws.amazon.com/id_id/toolkit-for-visual-studio/latest/user-guide/images/lambda-object-properties.png)


# Tutorial: Menggunakan Amazon Logging Frameworks dengan AWS Lambda untuk Membuat Log Aplikasi
<a name="cw-log-frameworks"></a>

Anda dapat menggunakan Amazon CloudWatch Logs untuk memantau, menyimpan, dan mengakses log aplikasi Anda. Untuk mendapatkan data CloudWatch log ke Log, gunakan AWS SDK atau instal agen CloudWatch Log untuk memantau folder log tertentu. CloudWatch Log terintegrasi dengan beberapa framework logging .NET yang populer, menyederhanakan alur kerja.

Untuk mulai bekerja dengan kerangka kerja CloudWatch logging Log dan .NET, tambahkan NuGet paket yang sesuai dan sumber keluaran CloudWatch Log ke aplikasi Anda, lalu gunakan pustaka logging Anda seperti biasa. Ini memungkinkan aplikasi Anda untuk mencatat pesan dengan framework .NET Anda, mengirimkannya ke CloudWatch Log, menampilkan pesan log aplikasi Anda di konsol CloudWatch Log. Anda juga dapat mengatur metrik dan alarm dari konsol CloudWatch Log, berdasarkan pesan log aplikasi Anda.

Kerangka kerja loging.NET yang didukung meliputi:
+ **NLog**: Untuk melihat, lihat paket [nuget.org NLog ](https://www.nuget.org/packages/AWS.Logger.NLog).
+ **Log4net**: Untuk melihat, lihat paket Log4net [nuget.org](https://www.nuget.org/packages/AWS.Logger.NLog).
+ **ASP.NET Core logging Framework**: Untuk melihat, lihat paket [nuget.org ASP.NET Core](https://www.nuget.org/packages/AWS.Logger.AspNetCore/) logging Framework.

Berikut ini adalah contoh `NLog.config` file yang memungkinkan CloudWatch Log dan konsol sebagai output untuk pesan log dengan menambahkan `AWS.Logger.NLog` NuGet paket, dan AWS target ke dalam`NLog.config`.

```
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      throwExceptions="true">
  <targets>
    <target name="aws" type="AWSTarget" logGroup="NLog.ConfigExample" region="us-east-1"/>
    <target name="logfile" xsi:type="Console" layout="${callsite} ${message}" />
  </targets>
  <rules>
    <logger name="*" minlevel="Info" writeTo="logfile,aws" />
  </rules>
</nlog>
```



Plugin logging semuanya dibangun di atas AWS SDK untuk .NET dan mengautentikasi AWS kredensional Anda dalam proses yang mirip dengan SDK. Contoh berikut merinci izin yang diperlukan oleh kredensi plugin logging untuk mengakses Log: CloudWatch 

**catatan**  
Plugin AWS loging.NET adalah proyek open source. Untuk informasi tambahan, sampel, dan instruksi, lihat topik [sampel](https://github.com/aws/aws-logging-dotnet/tree/master/samples) dan [instruksi](https://github.com/aws/aws-logging-dotnet/blob/master/README.md) di [ GitHubrepositori.NET AWS Logging](https://github.com/aws/aws-logging-dotnet).

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents",
        "logs:DescribeLogGroups"
      ],
      "Resource": [
        "arn:aws:logs:*:*:*"
      ]
    }
  ]
}
```

------