

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

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