AWS Lambda Proyek Dasar Membuat Gambar Docker - AWS Toolkit dengan Amazon Q

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

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, dengan dua perbedaan:

  • Sebuah Dockerfile disertakan dalam proyek.

  • Konfigurasi penerbitan alternatif dipilih.

Untuk informasi tentang gambar kontainer Lambda, lihat Paket Penerapan Lambda 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 Panduan Pengguna ini.

Buat Proyek Lambda Inti Visual Studio .NET

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.

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

  3. Di bidang Nama Proyek, masukkanAWSLambdaDocker, tentukan lokasi file Anda, lalu pilih Buat.

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

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

  1. Dockerfile

  2. aws-lambda-tools-defaults.json

  3. Function.cs

1. Dockerfile

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 menyertakanENTRYPOINT, 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

aws-lambda-tools-defaults.jsonFile 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. 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

Function.csFile mendefinisikan fungsi c # yang akan diekspos sebagai fungsi Lambda. FunctionHandlerIni adalah fungsi Lambda yang berjalan saat fungsi Lambda berjalan. Dalam proyek ini, FunctionHandler panggilan ToUpper() pada teks input.

Publikasikan ke Lambda

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.

  2. Dari halaman Upload Lambda Function, lakukan hal berikut:

    Unggah layar untuk mempublikasikan fungsi Lambda berbasis gambar ke AWS
    1. Untuk Package Type, Image telah secara otomatis dipilih sebagai Package Type Anda karena wizard publikasi mendeteksi sebuah Dockerfile dalam proyek Anda.

    2. Untuk Nama Fungsi, masukkan nama tampilan untuk instance Lambda Anda. Nama ini adalah nama referensi yang ditampilkan di AWS Explorer di Visual Studio dan AWS Management Console.

    3. Untuk Deskripsi, masukkan teks untuk ditampilkan dengan instance Anda di AWS Management Console.

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

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

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

    7. Pilih Selanjutnya.

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

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

  5. 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.
  6. 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

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

Membersihkan

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

Untuk informasi tentang membuat dan menguji gambar Lambda, lihat Menggunakan Gambar Kontainer dengan Lambda.

Untuk informasi tentang penerapan gambar kontainer, izin, dan pengaturan konfigurasi utama, lihat Mengonfigurasi Fungsi.