

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

# Runtime Fungsi Web Lambda
<a name="web-functions-runtimes"></a>

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](web-functions-revisions-env-vars.md).

## Didukung Node.js versi
<a name="web-functions-runtimes-versions"></a>


| 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](lambda-runtimes.md#runtime-support-policy)

## Penambalan runtime otomatis
<a name="web-functions-runtimes-patching"></a>

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. `runtime`Pengidentifikasi 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](runtimes-update.md)

## Kerangka kerja web yang didukung
<a name="web-functions-runtimes-frameworks"></a>

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](web-functions-revisions-env-vars.md). Untuk aplikasi lengkap, lihat[Minimal Ekspres application](web-functions-samples.md#web-functions-samples-express).

## Node.js model eksekusi
<a name="web-functions-runtimes-execution-model"></a>

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 `maxConcurrencyPerEnvironment` untuk 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`req`seperti/ `res` objek) untuk mengisolasi data permintaan.

Untuk panduan tentang konfigurasi `maxConcurrencyPerEnvironment` berdasarkan karakteristik aplikasi I/O dan CPU Anda, lihat[Perilaku penskalaan untuk Fungsi Web Lambda](web-functions-scaling.md).

## Memori dan Node.js tumpukan
<a name="web-functions-runtimes-memory"></a>

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_OPTIONS` variabel lingkungan revisi, misalnya `NODE_OPTIONS=--max-old-space-size=1536` (nilainya dalam MB).
+ Nilai yang Anda tetapkan `NODE_OPTIONS` menggantikan 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
<a name="web-functions-runtimes-port"></a>

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](web-functions-testing.md#web-functions-testing-local).

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, lihat[Siklus hidup lingkungan eksekusi](web-functions-env-lifecycle.md). Untuk cara mengkonfigurasi`timeoutSeconds`, lihat[Mengelola revisi Fungsi Web](web-functions-revisions.md).