

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

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