Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Runtime Fungsi Web Lambda
Lambda Web Functions menjalankan kode server HTTP Anda menggunakan runtime terkelola. Aplikasi Anda harus memulai server HTTP yang mendengarkan pada host dan port yang ditentukan oleh variabel AWS_LAMBDA_HTTP_ENDPOINT lingkungan. Fungsi Web Lambda saat ini mendukung. Node.js Secara default, runtime dimuat index.js di root paket penerapan. Untuk menggunakan file entri yang berbeda, atur variabel AWS_LAMBDA_NODEJS_ENTRYPOINT lingkungan. Lihat perinciannya di Variabel lingkungan.
Didukung Node.js versi
| Pengidentifikasi runtime | Versi Node.js | Status |
|---|---|---|
nodejs24.x |
Node.js24 | Didukung |
Tentukan pengidentifikasi runtime di runtimeConfig bagian saat Anda membuat revisi. Contoh:
"runtimeConfig": { "runtime": "nodejs24.x" }
Runtime nodejs24.x Web Function mengikuti siklus penghentian yang sama dengan runtime Lambda Event Functions yang sesuai. Untuk tanggal penghentian dan proses penghentian, lihat. Kebijakan penghentian runtime
Penambalan runtime otomatis
Lambda secara otomatis menambal Node.js runtime dengan pembaruan keamanan dan perbaikan bug. Patching berlaku untuk layer runtime yang mendasarinya dan tidak mengubah kode aplikasi Anda. runtimePengidentifikasi revisi Anda (misalnya,nodejs24.x) selalu menyelesaikan ke versi patch terbaru dari runtime utama tersebut.
catatan
Kontrol manajemen runtime tidak didukung untuk Fungsi Web. Anda tidak dapat menyematkan ke versi tambalan tertentu atau menonaktifkan penambalan otomatis. Lambda selalu menggunakan versi patch terbaru dari runtime yang Anda tentukan.
Untuk informasi selengkapnya tentang cara Lambda mengelola pembaruan runtime, lihat. Memahami bagaimana Lambda mengelola pembaruan versi runtime
Kerangka kerja web yang didukung
Anda dapat menggunakan kerangka Node.js web apa pun yang memulai server HTTP. Kerangka kerja populer meliputi:
-
Express
-
Next.js
-
Fastify
-
Koa
Anda tidak memerlukan AWS Lambda Web Adapter atau adaptor event-to-HTTP lainnya. Aplikasi Anda menangani permintaan HTTP secara langsung menggunakan routing standar kerangka kerja dan middleware. Beberapa kerangka kerja, seperti Next.js dalam mode mandiri, membaca variabel lingkungan mereka sendiri untuk alamat mendengarkan. Untuk kerangka kerja ini, gunakan file index.js entri yang menetapkan variabel-variabel tersebut AWS_LAMBDA_HTTP_ENDPOINT sebelum memulai server. Lihat perinciannya di Variabel lingkungan. Untuk aplikasi lengkap, lihatMinimal Ekspres application.
Node.js model eksekusi
Node.jsmenggunakan model eksekusi yang digerakkan oleh peristiwa. Secara default, Node.js menjalankan JavaScript kode Anda pada satu utas utama, dan I/O operasi (panggilan jaringan, akses sistem file) tidak memblokir dan didorong oleh peristiwa. Aplikasi Anda dapat membuat thread tambahan dengan worker_threads modul jika membutuhkannya. Model ini memiliki implikasi penting untuk Fungsi Web:
- Konkurensi melalui async I/O
-
Server Anda menangani beberapa permintaan bersamaan dengan menggunakan operasi asinkron (
async/await, Promises, callback). Sementara satu permintaan menunggu respons database, loop peristiwa melayani permintaan lainnya. Inilah sebabnya mengapa Web Functions dapat menangani banyak permintaan bersamaan dalam satu lingkungan tanpa banyak utas. - Hindari memblokir loop acara
-
CPU-intensive operasi sinkron (penguraian JSON besar, perhitungan kompleks, pembacaan file sinkron) memblokir loop peristiwa dan mencegah semua permintaan lainnya diproses. Jika aplikasi Anda CPU-heavy berfungsi, turunkan ke thread pekerja atau kurangi
maxConcurrencyPerEnvironmentuntuk membatasi dampaknya. - Minta isolasi
-
Karena semua permintaan berbagi proses dan loop peristiwa yang sama, hindari menyimpan status per permintaan dalam variabel global. Gunakan konteks middleware dengan cakupan permintaan (Express
reqseperti/resobjek) untuk mengisolasi data permintaan.
Untuk panduan tentang konfigurasi maxConcurrencyPerEnvironment berdasarkan karakteristik aplikasi I/O dan CPU Anda, lihatPerilaku penskalaan untuk Fungsi Web Lambda.
Memori dan Node.js tumpukan
Setiap lingkungan eksekusi memiliki memori 2 GB. Berikut ini berlaku untuk tumpukan Node.js V8:
-
Tumpukan default adalah 1.024 MB.
-
Untuk menggunakan heap yang lebih besar, atur
NODE_OPTIONSvariabel lingkungan revisi, misalnyaNODE_OPTIONS=--max-old-space-size=1536(nilainya dalam MB). -
Nilai yang Anda tetapkan
NODE_OPTIONSmenggantikan default. Jika Anda hanya menyetel--max-old-space-size, Lambda tidak menyetel--max-semi-space-size, dan Node.js menggunakan defaultnya sendiri untuk itu. -
Heap, buffer, alokasi asli, runtime, dan permintaan bersamaan semuanya harus sesuai dengan memori lingkungan 2 GB.
Bagaimana Lambda merutekan permintaan ke aplikasi Anda
Titik akhir Fungsi Web hanya menerima lalu lintas HTTPS, pada port 443. HTTP biasa tidak disajikan, jadi Anda tidak perlu mengarahkan HTTP ke HTTPS atau mengonfigurasi TLS di aplikasi Anda.
Lambda mengakhiri TLS di titik akhir dan meneruskan setiap permintaan ke server HTTP aplikasi Anda di dalam lingkungan eksekusi. Aplikasi Anda menyajikan HTTP biasa pada alamat yang disediakan Lambda; Anda tidak pernah menangani sertifikat atau konfigurasi TLS dalam kode Anda.
Lambda memilih host dan port yang harus didengarkan server Anda. Lambda mengkomunikasikan alamat ke aplikasi Anda melalui variabel AWS_LAMBDA_HTTP_ENDPOINT lingkungan, dalam format. host:port Gunakan variabel ini, yang ditetapkan Lambda, untuk menentukan di mana server Anda mendengarkan. Aplikasi Anda harus membaca variabel saat startup:
const [host, port] = (process.env.AWS_LAMBDA_HTTP_ENDPOINT || 'localhost:3000').split(':'); app.listen(port, host);
Lambda tidak mengatur variabel di komputer lokal Anda. Alamat fallback hanya berlaku ketika variabel tidak disetel, sehingga hanya digunakan dalam proses lokal. Untuk menggunakan alamat lokal yang berbeda, atur AWS_LAMBDA_HTTP_ENDPOINT sendiri. Sebagai contoh, lihat Jalankan server HTTP secara lokal.
Lambda menambahkan lambda-web-request-id header ke setiap permintaan yang diteruskan ke aplikasi Anda, dan mengembalikan nilai yang sama sebagai header respons, sehingga Anda dapat menghubungkan permintaan klien dengan log aplikasi Anda.
Lambda merutekan permintaan web ke alamat yang ditentukan oleh. AWS_LAMBDA_HTTP_ENDPOINT Jika server Anda mendengarkan pada host atau port yang berbeda, permintaan tidak mencapai aplikasi Anda.
Server Anda harus mulai mendengarkan dalam waktu 10 detik setelah startup, dan setiap permintaan yang dilayaninya terikat oleh timeoutSeconds pengaturan revisi. Untuk urutan startup dan shutdown, lihatSiklus hidup lingkungan eksekusi. Untuk cara mengkonfigurasitimeoutSeconds, lihatMengelola revisi Fungsi Web.