View a markdown version of this page

Menguji Fungsi Web Lambda - AWS Lambda

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

Menguji Fungsi Web Lambda

Fungsi Web menjalankan server HTTP standar, sehingga Anda dapat menguji sebagian besar perilaku aplikasi secara lokal dengan alat normal kerangka kerja Anda. Pengujian cloud masih diperlukan untuk memvalidasi otorisasi IAM, akses Amazon S3 dan AWS Key Management Service (AWS KMS), status siklus hidup Fungsi Web, penskalaan, telemetri, dan perilaku Multi-wilayah.

Lapisan uji yang direkomendasikan

Tabel berikut menjelaskan setiap lapisan pengujian, apa yang divalidasi, dan di mana ia berjalan.

Lapisan uji Apa yang divalidasi Dimana ia berjalan
Unit Logika bisnis, validasi, keputusan otorisasi, serialisasi, dan penanganan kesalahan. Pembangunan lokal dan membangun lingkungan.
Integrasi HTTP Rute, middleware, header, streaming, batas waktu, pemutusan yang anggun, dan perilaku kerangka kerja. Terhadap server produksi yang berjalan secara lokal.
Paket File entri, dependensi produksi, tata letak arsip, startup, dan penggunaan server. AWS_LAMBDA_HTTP_ENDPOINT Dari arsip persis yang diunggah oleh pipeline penerapan.
Integrasi cloud IAM, kebijakan bucket, kunci, status siklus hidup, perilaku titik akhir, telemetri, dan panggilan layanan hilir. AWS Dalam lingkungan yang terisolasi Akun AWS atau pengujian.
Beban dan ketahanan Keamanan konkurensi, latensi, pelambatan, batas hilir, rollback, dan perilaku kegagalan Regional. Dalam lingkungan cloud seperti produksi dengan biaya eksplisit dan kontrol lalu lintas.

Jalankan server HTTP secara lokal

Gunakan fallback lokal untukAWS_LAMBDA_HTTP_ENDPOINT, seperti yang ditunjukkan dalam file. Minimal Ekspres application Anda juga dapat mengatur variabel secara eksplisit untuk menguji jalur startup yang sama yang digunakan oleh Lambda:

AWS_LAMBDA_HTTP_ENDPOINT=127.0.0.1:3000 node index.js

Kirim permintaan dengan klien HTTP normal Anda dan verifikasi kode status, badan respons, header, validasi permintaan, middleware otentikasi, batas waktu, streaming, dan penanganan pemutusan klien.

Jalankan permintaan bersamaan selama pengujian integrasi lokal. Periksa status permintaan global, cache yang dapat diubah bersama, inisialisasi duplikat, tabrakan nama file, dan pemblokiran loop peristiwa.

Uji paket penerapan

  1. Instal dependensi dari file kunci yang dikomit dan buat arsip menggunakan perintah yang sama dengan pipeline penerapan.

  2. Ekstrak arsip ke direktori bersih. Jalankan aplikasi dari direktori itu tanpa akses ke dependensi pengembangan atau file sumber yang tidak dilacak.

  3. Verifikasi bahwa file entri yang dikonfigurasi ada di jalur yang diharapkan dan mulai server HTTP.

  4. Rekam checksum arsip dan ID versi objek Amazon S3 yang digunakan oleh revisi. Gunakan nilai-nilai tersebut untuk mengidentifikasi artefak yang tepat yang sedang diuji.

Fungsi Web berjalan di Arm64. Ketika sebuah paket berisi dependensi asli, buat dan uji dependensi tersebut untuk Linux Arm64 daripada menggunakan kembali artefak dari komputer pengembangan x86-64. Misalnya, Anda dapat menginstal dependensi produksi dalam wadah Arm64:

docker run --rm --platform linux/arm64 \ --volume "$PWD":/app \ --workdir /app \ node:24 \ npm ci --omit=dev

Uji di lingkungan cloud yang terisolasi

  1. Unggah arsip yang diuji ke bucket Amazon S3 berversi dan buat revisi yang mereferensikan versi objek yang dihasilkan.

  2. Polling revisi sampai menjadi Active atauFailed. Gagal tes dengan yang dilaporkan stateReason alih-alih menunggu tanpa batas waktu.

  3. Buat atau perbarui titik akhir pengujian. Polling keduanya state danupdateStatus. Untuk MultiRegion dan PerRegion titik akhir, verifikasi setiap status Regional.

  4. Kirim permintaan ke titik akhir dan verifikasi respons aplikasi, loglambda-web-request-id, metrik, dan efek samping hilir yang diharapkan.

  5. Hapus titik akhir, fungsi, objek uji, grup log, dan sumber daya pengujian lainnya saat pengujian selesai.

Uji otorisasi dan eksposur

  • UntukIamAuth, verifikasi bahwa permintaan yang tidak ditandatangani gagal, prinsipal yang diizinkan berhasil, prinsip yang ditolak gagal, dan akses lintas akun memerlukan kebijakan identitas dan sumber daya.

  • UntukApplicationManaged, uji kredenal aplikasi yang hilang, kedaluwarsa, cacat, dan tidak mencukupi. Uji otorisasi secara terpisah dari otentikasi.

  • Uji permintaan preflight browser, asal-usul yang diizinkan dan ditolak, permintaan yang dikreditkan, dan header keamanan saat browser memanggil titik akhir.

  • Ketika pintu depan melindungi titik akhir, verifikasi bahwa permintaan asal langsung ditolak dan bahwa hanya identitas pintu depan atau jalur jaringan yang diharapkan yang dapat memanggilnya.

Uji konkurensi, penskalaan, dan pelambatan

  • Tingkatkan beban secara bertahap saat merekam latensi, respons 4xx dan 5xx, throttle, lingkungan aktif, dan pemanfaatan hilir.

  • Uji yang dikonfigurasirateLimit,maxEnvironments, dan maxConcurrencyPerEnvironment secara independen. Gunakan header lambda-web-error-type respons (Platform.EndpointRequestThrottle,,, Platform.AccountRequestThrottle Platform.EndpointMaxEnvThrottlePlatform.AccountActiveVCPUArm64Throttle, atauPlatform.EndpointConcurrentInitThrottle) untuk mengonfirmasi batas mana yang menghasilkan setiap respons HTTP 429. Rekam respons HTTP 503 yang tidak memiliki lambda-web-error-type header secara terpisah. Tanggapan ini dapat menunjukkan pelepasan beban sementara atau kesalahan internal. Lihat perinciannya di Jenis kesalahan Fungsi Web.

  • Uji semburan lalu lintas dan start dingin, tidak hanya throughput kondisi mapan.

  • Gunakan data uji unik dan kunci idempotensi. Jangan mencoba lagi permintaan non-idempoten secara otomatis selama uji beban.

  • Tetapkan lalu lintas eksplisit, durasi, dan batas biaya sebelum memulai uji beban. Tes koordinat yang dapat memengaruhi kuota akun bersama atau sistem hilir.

Uji penerapan dan rollback

Dalam lingkungan pengujian, gunakan dua revisi dan lakukan prosedur perutean tertimbang yang sama yang digunakan dalam produksi. Verifikasi bahwa log atau metrik kustom Anda dapat mengatribusikan permintaan ke setiap revisi. Picu kondisi rollback dengan sengaja, kembalikan semua lalu lintas ke revisi sebelumnya, dan konfirmasikan bahwa objek kode dan dependensinya tetap tersedia.

Untuk PerRegion titik akhir MultiRegion atau titik akhir, uji kegagalan pembaruan sebagian dan konfirmasikan bahwa otomatisasi penerapan mendeteksi status Regional yang gagal. Uji tindakan pemulihan dan ulangi pembaruan titik akhir setelah memperbaiki penyebabnya.