

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

# Runtime Lambda
<a name="lambda-runtimes"></a>

Lambda mendukung banyak bahasa melalui penggunaan *runtime*. Runtime menyediakan lingkungan khusus bahasa yang menyampaikan peristiwa pemanggilan, informasi konteks, dan respons antara Lambda dan fungsinya. Anda dapat menggunakan runtime yang disediakan Lambda, atau membangun sendiri. 

Lambda agnostik dengan pilihan runtime Anda. Untuk fungsi sederhana, bahasa yang ditafsirkan seperti Python dan Node.js menawarkan kinerja tercepat. Untuk fungsi dengan komputasi yang lebih kompleks, bahasa yang dikompilasi seperti Java seringkali lebih lambat untuk diinisialisasi tetapi berjalan cepat di penangan Lambda. Pilihan runtime juga dipengaruhi oleh preferensi pengembang dan keakraban bahasa.

Setiap rilis bahasa pemrograman utama memiliki runtime terpisah, dengan *pengidentifikasi runtime* yang unik, seperti atau. `nodejs24.x` `python3.14` Untuk mengonfigurasi fungsi untuk menggunakan versi bahasa utama yang baru, Anda perlu mengubah pengenal runtime. Karena AWS Lambda tidak dapat menjamin kompatibilitas mundur antara versi utama, ini adalah operasi yang digerakkan oleh pelanggan.

 Untuk [fungsi yang didefinisikan sebagai image container](images-create.md), Anda memilih runtime dan distribusi Linux saat membuat image container. Untuk mengubah runtime, Anda membuat gambar kontainer baru.

Ketika Anda menggunakan arsip file .zip untuk paket deployment, Anda memilih runtime ketika Anda membuat fungsi. Untuk mengubah runtime, Anda dapat [memperbarui konfigurasi fungsi](configuration-function-zip.md). Runtime dipasangkan dengan salah satu distribusi Amazon Linux. Lingkungan eksekusi yang mendasari menyediakan pustaka dan [variabel lingkungan](configuration-envvars.md) tambahan yang dapat Anda akses dari kode fungsi Anda.

[Lambda memanggil fungsi Anda di lingkungan eksekusi.](lambda-runtime-environment.md) Lingkungan eksekusi menyediakan lingkungan runtime yang aman dan terisolasi yang mengelola sumber daya yang diperlukan untuk menjalankan fungsi Anda. Lambda menggunakan kembali lingkungan eksekusi dari pemanggilan sebelumnya jika tersedia, atau dapat membuat lingkungan eksekusi baru. 

Untuk menggunakan bahasa lain di Lambda, seperti [Go](lambda-golang.md) atau [Rust](lambda-rust.md), gunakan runtime khusus [OS](runtimes-provided.md). Area pelaksanaan Lambda menyediakan [antarmuka runtime](runtimes-api.md) atas adanya event invokasi dan mengirimkan tanggapan. [Anda dapat menerapkan bahasa lain dengan menerapkan [runtime kustom](runtimes-custom.md) di samping kode fungsi Anda, atau dalam lapisan.](chapter-layers.md)

## Waktu aktif yang didukung
<a name="runtimes-supported"></a>

Tabel berikut mencantumkan runtime Lambda yang didukung dan tanggal penghentian yang diproyeksikan. Setelah runtime tidak digunakan lagi, Anda masih dapat membuat dan memperbarui fungsi untuk jangka waktu terbatas. Untuk informasi selengkapnya, lihat [Penggunaan runtime setelah penghentian](#runtime-deprecation-levels). Tabel menyediakan tanggal yang diperkirakan saat ini untuk penghentian runtime, berdasarkan tanggal kami. [Kebijakan penghentian runtime](#runtime-support-policy) Tanggal-tanggal ini disediakan untuk tujuan perencanaan dan dapat berubah sewaktu-waktu.

**penting**  
Amazon Linux 2 dijadwalkan berakhir pada 30 Juni 2026. Runtime Lambda dan image dasar container untuk Java 8 (AL2), Java 11, Java 17, Python 3.10, Python 3.11, dan provided.al2 akan terus menerima patch untuk masalah keamanan Amazon Linux 2 penting yang penting [dan penting](https://alas.aws.amazon.com/faqs.html), selain patch runtime bahasa, hingga tanggal penghentian yang ditunjukkan pada tabel di bawah ini.  
Kami menyarankan pelanggan meningkatkan ke runtime berbasis Amazon Linux 2023 sesegera mungkin. Untuk pelanggan yang meningkatkan ke Java 21 atau Java 25, Anda dapat menggunakan [AWS Transform kustom](https://docs.aws.amazon.com/transform/latest/userguide/custom.html) untuk membantu peningkatan ini. Untuk pelanggan yang tidak dapat memutakhirkan versi Java mereka, kami berencana untuk merilis runtime berbasis Amazon Linux 2023 untuk Java 8, Java 11, dan Java 17 sebelum akhir Q2 2026.


| Nama | Pengidentifikasi | Sistem operasi | Tanggal pengusangan | Buat fungsi blok | Pembaruan fungsi blok | 
| --- | --- | --- | --- | --- | --- | 
|  Node.js 24  |  `nodejs24.x`  |  Amazon Linux 2023  |   30 Apr 2028   |   1 Jun 2028   |   1 Jul 2028   | 
|  Node.js 22  |  `nodejs22.x`  |  Amazon Linux 2023  |   30 Apr 2027   |   1 Jun 2027   |   1 Jul 2027   | 
|  Node.js 20  |  `nodejs20.x`  |  Amazon Linux 2023  |   30 Apr 2026   |   Agustus 31, 2026   |   Sep 30, 2026   | 
|  Python 3.14  |  `python3.14`  |  Amazon Linux 2023  |   30 Jun 2029   |   Jul 31, 2029   |   Agustus 31, 2029   | 
|  Python 3.13  |  `python3.13`  |  Amazon Linux 2023  |   30 Jun 2029   |   Jul 31, 2029   |   Agustus 31, 2029   | 
|  Python 3.12  |  `python3.12`  |  Amazon Linux 2023  |   Okt 31, 2028   |   Nov 30, 2028   |   10 Jan 2029   | 
|  Python 3.11  |  `python3.11`  |  Amazon Linux 2  |   30 Jun 2027   |   31 Jul 2027   |   Agustus 31, 2027   | 
|  Python 3.10  |  `python3.10`  |  Amazon Linux 2  |   Okt 31, 2026   |   Nov 30, 2026   |   15 Jan 2027   | 
|  Jawa 25  |  `java25`  |  Amazon Linux 2023  |   30 Jun 2029   |   31 Jul 2029   |   Agustus 31, 2029   | 
|  Jawa 21  |  `java21`  |  Amazon Linux 2023  |   30 Jun 2029   |   31 Jul 2029   |   Agustus 31, 2029   | 
|  Jawa 17  |  `java17`  |  Amazon Linux 2  |   30 Jun 2027   |   31 Jul 2027   |   Agustus 31, 2027   | 
|  Java 11  |  `java11`  |  Amazon Linux 2  |   30 Jun 2027   |   31 Jul 2027   |   Agustus 31, 2027   | 
|  Java 8  |  `java8.al2`  |  Amazon Linux 2  |   30 Jun 2027   |   31 Jul 2027   |   Agustus 31, 2027   | 
|  .NET 10  |  `dotnet10`  |  Amazon Linux 2023  |   Nov 14, 2028   |   14 Des 2028   |   15 Jan 2029   | 
|  .NET 9 (hanya wadah)  |  `dotnet9`  |  Amazon Linux 2023  |   Nov 10, 2026   |   Tidak dijadwalkan   |   Tidak dijadwalkan   | 
|  .NET 8  |  `dotnet8`  |  Amazon Linux 2023  |   Nov 10, 2026   |   10 Des 2026   |   11 Jan 2027   | 
|  Ruby 3.4  |  `ruby3.4`  |  Amazon Linux 2023  |   31 Mar 2028   |   30 Apr 2028   |   31 Mei 2028   | 
|  Ruby 3.3  |  `ruby3.3`  |  Amazon Linux 2023  |   31 Mar 2027   |   30 Apr 2027   |   31 Mei 2027   | 
|  Ruby 3.2  |  `ruby3.2`  |  Amazon Linux 2  |   31 Mar 2026   |   Agustus 31, 2026   |   Sep 30, 2026   | 
|  Runtime Khusus OS  |  `provided.al2023`  |  Amazon Linux 2023  |   30 Jun 2029   |   31 Jul 2029   |   Agustus 31, 2029   | 
|  Runtime Khusus OS  |  `provided.al2`  |  Amazon Linux 2  |   Juli 31, 2026   |   Agustus 31, 2026   |   Sep 30, 2026   | 

**catatan**  
Untuk wilayah baru, Lambda tidak akan mendukung runtime yang ditetapkan untuk tidak digunakan lagi dalam 6 bulan ke depan.

Lambda membuat runtime terkelola dan gambar dasar kontainer yang sesuai diperbarui dengan tambalan dan dukungan untuk rilis versi minor. Untuk informasi selengkapnya, lihat [pembaruan runtime Lambda](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-update.html).

Untuk berinteraksi secara terprogram dengan sumber lain Layanan AWS dan sumber daya dari fungsi Lambda Anda, Anda dapat menggunakan salah satunya. AWS SDKs Runtime Node.js, Python, dan Ruby menyertakan versi SDK. AWS [Namun, untuk mempertahankan kontrol penuh atas dependensi Anda, dan untuk memaksimalkan [kompatibilitas mundur](runtimes-update.md#runtime-update-compatibility) selama pembaruan runtime otomatis, sebaiknya Anda selalu menyertakan modul SDK yang digunakan kode Anda (bersama dengan dependensi apa pun) dalam paket penerapan fungsi Anda atau di lapisan Lambda.](chapter-layers.md)

Sebaiknya gunakan versi SDK yang disertakan runtime hanya jika Anda tidak dapat menyertakan paket tambahan dalam penerapan. Misalnya, saat Anda membuat fungsi menggunakan editor kode konsol Lambda atau menggunakan kode fungsi sebaris dalam templat. CloudFormation 

Lambda secara berkala memperbarui versi yang AWS SDKs disertakan dalam runtime Node.js, Python, dan Ruby. Untuk menentukan versi AWS SDK yang disertakan dalam runtime yang Anda gunakan, lihat bagian berikut:
+ [Versi SDK yang disertakan Runtime (Node.js)](lambda-nodejs.md#nodejs-sdk-included)
+ [Versi SDK termasuk runtime (Python)](lambda-python.md#python-sdk-included)
+ [Versi SDK termasuk runtime (Ruby)](lambda-ruby.md#ruby-sdk-included)

Lambda terus mendukung bahasa pemrograman Go setelah penghentian runtime Go 1.x. *Untuk informasi selengkapnya, lihat [Memigrasi AWS Lambda fungsi dari runtime Go1.x ke runtime khusus di Amazon Linux 2 di Blog Komputasi](https://aws.amazon.com/blogs/compute/migrating-aws-lambda-functions-from-the-go1-x-runtime-to-the-custom-runtime-on-amazon-linux-2/).AWS *

Semua runtime Lambda yang didukung mendukung arsitektur x86\$164 dan arm64.

## Rilis runtime baru
<a name="runtimes-future"></a>

Lambda menyediakan runtime terkelola untuk versi bahasa baru hanya ketika rilis mencapai fase dukungan jangka panjang (LTS) dari siklus rilis bahasa. Misalnya, untuk [siklus rilis Node.js](https://nodejs.org/en/about/previous-releases), saat rilis mencapai fase LTS Aktif.

Sebelum rilis mencapai fase dukungan jangka panjang, ia tetap dalam pengembangan dan masih dapat mengalami perubahan yang melanggar. Lambda menerapkan pembaruan runtime secara otomatis secara default, sehingga melanggar perubahan pada versi runtime dapat menghentikan fungsi Anda berfungsi seperti yang diharapkan.

Lambda tidak menyediakan runtime terkelola untuk versi bahasa yang tidak dijadwalkan untuk rilis LTS.

Daftar berikut menunjukkan bulan peluncuran target untuk runtime Lambda mendatang. Tanggal-tanggal ini hanya bersifat indikatif dan dapat berubah sewaktu-waktu.
+ **Ruby 3.5 - Maret 2026**
+ **Java 8, 11, dan 17 pada AL2 023** - Q2 2026
+ **Node.js 26** - November 2026
+ **Python 3.15** - November 2026

## Kebijakan penghentian runtime
<a name="runtime-support-policy"></a>

Runtime Lambda untuk arsip file.zip dibangun di sekitar kombinasi sistem operasi, bahasa pemrograman, dan pustaka perangkat lunak yang tunduk pada pembaruan pemeliharaan dan keamanan. Kebijakan penghentian standar Lambda adalah menghentikan runtime ketika komponen utama runtime mencapai akhir dukungan jangka panjang komunitas (LTS) dan pembaruan keamanan tidak lagi tersedia. Biasanya, ini adalah runtime bahasa, meskipun dalam beberapa kasus, runtime dapat dihentikan karena sistem operasi (OS) mencapai akhir LTS.

Setelah runtime tidak digunakan lagi, AWS mungkin tidak lagi menerapkan patch keamanan atau pembaruan ke runtime tersebut, dan fungsi yang menggunakan runtime tersebut tidak lagi memenuhi syarat untuk dukungan teknis. Runtime yang tidak digunakan lagi tersebut disediakan 'apa adanya', tanpa jaminan apa pun, dan mungkin mengandung bug, kesalahan, cacat, atau kerentanan lainnya.

*Untuk mempelajari lebih lanjut tentang mengelola upgrade runtime dan penghentian, lihat bagian berikut dan [Mengelola upgrade AWS Lambda runtime](https://aws.amazon.com/blogs/compute/managing-aws-lambda-runtime-upgrades/) di Compute Blog.AWS *

**penting**  
Lambda terkadang menunda penghentian runtime Lambda untuk periode terbatas di luar akhir tanggal dukungan versi bahasa yang didukung runtime. Selama periode ini, Lambda hanya menerapkan patch keamanan ke OS runtime. Lambda tidak menerapkan patch keamanan untuk runtime bahasa pemrograman setelah mereka mencapai akhir tanggal dukungan mereka.

## Model tanggung jawab bersama
<a name="runtimes-shared-responsibility"></a>

 Lambda bertanggung jawab untuk mengkurasi dan menerbitkan pembaruan keamanan untuk semua runtime terkelola dan gambar dasar kontainer yang didukung. Secara default, Lambda akan menerapkan pembaruan ini secara otomatis ke fungsi menggunakan runtime terkelola. Jika pengaturan pembaruan runtime otomatis default telah diubah, lihat model [tanggung jawab bersama kontrol manajemen runtime](runtime-management-shared.md). Untuk fungsi yang digunakan menggunakan gambar kontainer, Anda bertanggung jawab untuk membangun kembali gambar kontainer fungsi Anda dari gambar dasar terbaru dan menerapkan kembali gambar kontainer. 

 Ketika runtime tidak digunakan lagi, tanggung jawab Lambda untuk memperbarui runtime terkelola dan gambar dasar kontainer berhenti. Anda bertanggung jawab untuk meningkatkan fungsi Anda untuk menggunakan runtime atau gambar dasar yang didukung. 

 Dalam semua kasus, Anda bertanggung jawab untuk menerapkan pembaruan pada kode fungsi Anda, termasuk dependensinya. Tanggung jawab Anda di bawah model tanggung jawab bersama dirangkum dalam tabel berikut.


| Fase siklus hidup runtime | Tanggung jawab Lambda | Tanggung jawab Anda | 
| --- | --- | --- | 
| Runtime terkelola yang didukung |  Berikan pembaruan runtime reguler dengan tambalan keamanan dan pembaruan lainnya. Menerapkan pembaruan runtime secara otomatis secara default (lihat [Mode pembaruan runtime](runtimes-update.md#runtime-management-controls) perilaku non-default).  | Perbarui kode fungsi Anda, termasuk dependensi, untuk mengatasi kerentanan keamanan apa pun. | 
| Gambar kontainer yang didukung | Berikan pembaruan rutin ke gambar dasar kontainer dengan tambalan keamanan dan pembaruan lainnya. |  Perbarui kode fungsi Anda, termasuk dependensi, untuk mengatasi kerentanan keamanan apa pun. Buat ulang dan terapkan ulang image container Anda secara teratur menggunakan image dasar terbaru.  | 
| Runtime terkelola mendekati penghentian |  Beri tahu pelanggan sebelum penghentian runtime melalui dokumentasi,, email, Dasbor Health dan. Trusted Advisor Tanggung jawab untuk pembaruan runtime berakhir pada penghentian.  |  Pantau dokumentasi Lambda, email Dasbor Health, atau informasi Trusted Advisor penghentian runtime. Tingkatkan fungsi ke runtime yang didukung sebelum runtime sebelumnya tidak digunakan lagi.  | 
| Gambar kontainer mendekati penghentian |  Pemberitahuan penghentian tidak tersedia untuk fungsi yang menggunakan gambar kontainer. Tanggung jawab atas pembaruan gambar dasar kontainer berakhir dengan penghentian.  | Perhatikan jadwal penghentian dan tingkatkan fungsi ke gambar dasar yang didukung sebelum gambar sebelumnya tidak digunakan lagi. | 

## Penggunaan runtime setelah penghentian
<a name="runtime-deprecation-levels"></a>

Setelah runtime tidak digunakan lagi, AWS mungkin tidak lagi menerapkan patch keamanan atau pembaruan ke runtime tersebut, dan fungsi yang menggunakan runtime tersebut tidak lagi memenuhi syarat untuk dukungan teknis. Meskipun Anda dapat terus menjalankan fungsi tanpa batas waktu, AWS sangat menyarankan untuk bermigrasi ke runtime yang didukung. Runtime yang tidak digunakan lagi disediakan 'apa adanya', tanpa jaminan apa pun, dan mungkin berisi bug, kesalahan, cacat, atau kerentanan lainnya. Fungsi yang menggunakan runtime usang juga dapat mengalami penurunan kinerja atau masalah lain, seperti kedaluwarsa sertifikat, yang dapat menyebabkan mereka berhenti bekerja dengan benar.

Anda dapat memperbarui fungsi untuk menggunakan runtime yang didukung lebih baru kapan saja setelah runtime tidak digunakan lagi. Sebaiknya uji fungsi Anda dengan runtime baru sebelum menerapkan perubahan di lingkungan produksi. Anda tidak akan dapat kembali ke runtime yang tidak digunakan lagi setelah pembaruan fungsi diblokir. Sebaiknya gunakan [versi](configuration-versions.md) fungsi dan [alias](configuration-aliases.md) untuk mengaktifkan penerapan yang aman dengan rollback.

Garis waktu berikut menjelaskan apa yang terjadi ketika runtime tidak digunakan lagi:


| Fase siklus hidup runtime | Saat | Apa | 
| --- | --- | --- | 
|  Periode pemberitahuan penghentian  |  Setidaknya 180 hari sebelum penghentian  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/lambda-runtimes.html)  | 
|  penghentian  |  Tanggal pengusangan  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/lambda-runtimes.html)  | 
|  Buat fungsi blok  |  Setidaknya 30 hari setelah penghentian  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/lambda-runtimes.html)  | 
|  Pembaruan fungsi blok  |  Setidaknya 60 hari setelah penghentian  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/lambda-runtimes.html)  | 

**catatan**  
Untuk beberapa runtime, AWS menunda block-function-create dan block-function-update tanggal di luar 30 dan 60 hari biasa setelah penghentian. AWS telah membuat perubahan ini sebagai tanggapan atas umpan balik pelanggan untuk memberi Anda lebih banyak waktu untuk meningkatkan fungsi Anda. Lihat tabel di [Waktu aktif yang didukung](#runtimes-supported) dan [Waktu pengoperasian terdepresiasi](#runtimes-deprecated) untuk melihat tanggal runtime Anda. Lambda tidak akan mulai memblokir fungsi membuat atau memperbarui sebelum tanggal yang diberikan dalam tabel ini.

## Menerima pemberitahuan penghentian runtime
<a name="runtime-deprecation-notify"></a>

Saat runtime mendekati tanggal penghentiannya, Lambda mengirimi Anda peringatan email jika ada fungsi dalam penggunaan runtime tersebut. Akun AWS Pemberitahuan juga ditampilkan di dalam Dasbor Health dan di AWS Trusted Advisor.
+ Menerima pemberitahuan email:

  Lambda mengirimi Anda peringatan email setidaknya **180 hari** sebelum runtime tidak digunakan lagi. Email ini mencantumkan versi \$1LATEST dari semua fungsi menggunakan runtime. Untuk melihat daftar lengkap versi fungsi yang terpengaruh, gunakan Trusted Advisor atau lihat[Mengambil data tentang fungsi Lambda yang menggunakan runtime usang](runtimes-list-deprecated.md).

  Lambda mengirimkan pemberitahuan email ke kontak akun Akun AWS utama Anda. Untuk informasi tentang melihat atau memperbarui alamat email di akun Anda, lihat [Memperbarui informasi kontak](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-update-contact.html) di *Referensi AWS Umum*.
+ Menerima pemberitahuan melalui Dasbor Health:

  Ini Dasbor Health menampilkan pemberitahuan setidaknya **180 hari** sebelum runtime tidak digunakan lagi. Pemberitahuan muncul di halaman **kesehatan akun Anda** di bawah [Pemberitahuan lain](https://health.aws.amazon.com/health/home#/account/dashboard/other-notifications). Tab **Sumber daya yang terpengaruh** pada notifikasi mencantumkan versi \$1LATEST dari semua fungsi menggunakan runtime.
**catatan**  
Untuk melihat lengkap dan up-to-date daftar versi fungsi yang terpengaruh, gunakan Trusted Advisor atau lihat[Mengambil data tentang fungsi Lambda yang menggunakan runtime usang](runtimes-list-deprecated.md).

  Dasbor Health notifikasi kedaluwarsa 90 hari setelah runtime yang terpengaruh tidak digunakan lagi.
+ Menggunakan AWS Trusted Advisor

  Trusted Advisor menampilkan pemberitahuan setidaknya **180 hari** sebelum runtime tidak digunakan lagi. Pemberitahuan muncul di halaman [Keamanan](https://console.aws.amazon.com/trustedadvisor/home#/category/security). Daftar fungsi yang terpengaruh ditampilkan di bawah **AWS Lambda Functions Using Deprecated** Runtimes. Daftar fungsi ini menunjukkan versi \$1LATEST dan yang diterbitkan dan diperbarui secara otomatis untuk mencerminkan status fungsi Anda saat ini.

  Anda dapat mengaktifkan notifikasi email mingguan dari Trusted Advisor halaman [Preferensi](https://console.aws.amazon.com/trustedadvisor/home?#/preferences) Trusted Advisor konsol.

## Waktu pengoperasian terdepresiasi
<a name="runtimes-deprecated"></a>

Runtime berikut telah mencapai akhir dukungan:


| Nama | Pengidentifikasi | Sistem operasi | Tanggal pengusangan | Buat fungsi blok | Pembaruan fungsi blok | 
| --- | --- | --- | --- | --- | --- | 
|  Python 3.9  |  python3.9  |  Amazon Linux 2  |   15 Des 2025   |   Agustus 31, 2026   |   Sep 30, 2026   | 
|  Node.js 18  |  nodejs18.x  |  Amazon Linux 2  |   Sep 1, 2025   |   Agustus 31, 2026   |   Sep 30, 2026   | 
|  .NET 6  |  dotnet6  |  Amazon Linux 2  |   20 Desember 2024   |   Agustus 31, 2026   |   Sep 30, 2026   | 
|  Python 3.8  |  python3.8  |  Amazon Linux 2  |   Okt 14, 2024   |   Agustus 31, 2026   |   Sep 30, 2026   | 
|  Node.js 16  |  nodejs16.x  |  Amazon Linux 2  |   12 Jun 2024   |   Agustus 31, 2026   |   Sep 30, 2026   | 
|  .NET 7 (hanya wadah)  |  dotnet7  |  Amazon Linux 2  |   14 Mei 2024   |   N/A   |   N/A   | 
|  Java 8  |  java8  |  Amazon Linux  |   8 Jan 2024   |   Februari 8, 2024   |   Sep 30, 2026   | 
|  Jalankan 1.x  |  go1.x  |  Amazon Linux  |   8 Jan 2024   |   Februari 8, 2024   |   Sep 30, 2026   | 
|  Runtime Khusus OS  |  provided  |  Amazon Linux  |   8 Jan 2024   |   Februari 8, 2024   |   Sep 30, 2026   | 
|  Ruby 2.7  |  ruby2.7  |  Amazon Linux 2  |   7 Desember 2023   |   9 Jan 2024   |   Sep 30, 2026   | 
|  Node.js 14  |  nodejs14.x  |  Amazon Linux 2  |   4 Desember 2023   |   9 Jan 2024   |   Sep 30, 2026   | 
|  Python 3.7  |  python3.7  |  Amazon Linux  |   4 Desember 2023   |   9 Jan 2024   |   Sep 30, 2026   | 
|  .NET Core 3.1  |  dotnetcore3.1  |  Amazon Linux 2  |   Apr 3, 2023   |   Apr 3, 2023   |   3 Mei 2023   | 
|  Node.js 12  |  nodejs12.x  |  Amazon Linux 2  |   31 Mar 2023   |   31 Mar 2023   |   30 Apr 2023   | 
|  Python 3.6  |  python3.6  |  Amazon Linux  |   18 Jul 2022   |   18 Jul 2022   |   Agustus 29, 2022   | 
|  .NET 5 (hanya wadah)  |  dotnet5.0  |  Amazon Linux 2  |   10 Mei 2022   |   N/A   |   N/A   | 
|  .NET Core 2.1  |  dotnetcore2.1  |  Amazon Linux  |   Jan 5, 2022   |   Jan 5, 2022   |   Apr 13, 2022   | 
|  Node.js 10  |  nodejs10.x  |  Amazon Linux 2  |   Juli 30, 2021   |   Juli 30, 2021   |   Februari 14, 2022   | 
|  Ruby 2.5  |  ruby2.5  |  Amazon Linux  |   Juli 30, 2021   |   Juli 30, 2021   |   Mar 31, 2022   | 
|  Python 2.7  |  python2.7  |  Amazon Linux  |   Juli 15, 2021   |   Juli 15, 2021   |   Mei 30, 2022   | 
|  Node.js 8.10  |  nodejs8.10  |  Amazon Linux  |   Mar 6, 2020   |   Februari 4, 2020   |   Mar 6, 2020   | 
|  Node.js 4.3  |  nodejs4.3  |  Amazon Linux  |   Mar 5, 2020   |   Februari 3, 2020   |   Mar 5, 2020   | 
|  Node.js 4.3 edge  |  nodejs4.3-edge  |  Amazon Linux  |   Mar 5, 2020   |   Mar 31, 2019   |   Apr 30, 2019   | 
|  Node.js 6.10  |  nodejs6.10  |  Amazon Linux  |   Agustus 12, 2019   |   Juli 12, 2019   |   Agustus 12, 2019   | 
|  .NET Core 1.0  |  dotnetcore1.0  |  Amazon Linux  |   27 Jun 2019   |   30 Jun 2019   |   30 Jul 2019   | 
|  .NET Core 2.0  |  dotnetcore2.0  |  Amazon Linux  |   30 Mei 2019   |   Apr 30, 2019   |   30 Mei 2019   | 
|  Node.js 0.10  |  nodejs  |  Amazon Linux  |   30 Agustus 2016   |   Sep 30, 2016   |   Okt 31, 2016   | 

Dalam hampir semua kasus, end-of-life tanggal versi bahasa atau sistem operasi sudah diketahui sebelumnya. Tautan berikut memberikan end-of-life jadwal untuk setiap bahasa yang didukung Lambda sebagai runtime terkelola.

**Kebijakan dukungan bahasa dan framework**
+ **Node.js** – [github.com](https://github.com/nodejs/Release#release-schedule)
+ **Python** – [devguide.python.org](https://devguide.python.org/versions/#versions)
+ **Ruby** – [www.ruby-lang.org](https://www.ruby-lang.org/en/downloads/branches/)
+ **Jawa** [— [www.oracle.com](https://www.oracle.com/java/technologies/java-se-support-roadmap.html) dan Corretto FAQs](https://aws.amazon.com/corretto/faqs/)
+ **Go** – [golang.org](https://golang.org/doc/devel/release.html)
+ **.NET** — [dotnet.microsoft.com](https://dotnet.microsoft.com/platform/support/policy/dotnet-core)

# Memahami bagaimana Lambda mengelola pembaruan versi runtime
<a name="runtimes-update"></a>

Lambda selalu memperbarui setiap runtime yang dikelola dengan pembaruan keamanan, perbaikan bug, fitur baru, peningkatan kinerja, dan dukungan untuk rilis versi minor. Pembaruan runtime ini diterbitkan sebagai versi *runtime*. Lambda menerapkan pembaruan runtime ke fungsi dengan memigrasikan fungsi dari versi runtime sebelumnya ke versi runtime baru.

Secara default, untuk fungsi yang menggunakan runtime terkelola, Lambda menerapkan pembaruan runtime secara otomatis. Dengan pembaruan runtime otomatis, Lambda menanggung beban operasional untuk menambal versi runtime. Bagi sebagian besar pelanggan, pembaruan otomatis adalah pilihan yang tepat. Anda dapat mengubah perilaku default ini dengan [mengonfigurasi pengaturan manajemen runtime](runtime-management-configure-settings.md).

Lambda juga menerbitkan setiap versi runtime baru sebagai gambar kontainer. Untuk memperbarui versi runtime untuk fungsi berbasis container, Anda harus [membuat image container baru dari image](images-create.md) dasar yang diperbarui dan menerapkan ulang fungsi Anda.

Setiap versi runtime dikaitkan dengan nomor versi dan ARN (Amazon Resource Name). Nomor versi runtime menggunakan skema penomoran yang didefinisikan Lambda, terlepas dari nomor versi yang digunakan bahasa pemrograman. Nomor versi runtime tidak selalu berurutan. Misalnya, versi 42 mungkin diikuti oleh versi 45. ARN versi runtime adalah pengidentifikasi unik untuk setiap versi runtime. Anda dapat melihat ARN versi runtime fungsi Anda saat ini di konsol Lambda, atau [`INIT_START`baris](runtime-management-identify.md) log fungsi Anda.

Versi runtime tidak boleh disamakan dengan pengidentifikasi runtime. Setiap runtime memiliki pengenal **runtime yang unik**, seperti atau. `python3.14` `nodejs24.x` Ini sesuai dengan setiap rilis bahasa pemrograman utama. Versi runtime menjelaskan versi patch dari runtime individual.

**catatan**  
ARN untuk nomor versi runtime yang sama dapat bervariasi antara Wilayah AWS dan arsitektur CPU.

**Topics**
+ [

## Kompatibilitas mundur
](#runtime-update-compatibility)
+ [

## Mode pembaruan runtime
](#runtime-management-controls)
+ [

## Peluncuran versi runtime dua fase
](#runtime-management-two-phase)
+ [

# Mengonfigurasi pengaturan manajemen runtime Lambda
](runtime-management-configure-settings.md)
+ [

# Mengembalikan versi runtime Lambda
](runtime-management-rollback.md)
+ [

# Mengidentifikasi perubahan versi runtime Lambda
](runtime-management-identify.md)
+ [

# Memahami model tanggung jawab bersama untuk manajemen runtime Lambda
](runtime-management-shared.md)
+ [

# Mengontrol izin pembaruan runtime Lambda untuk aplikasi dengan kepatuhan tinggi
](runtime-management-hc-applications.md)

## Kompatibilitas mundur
<a name="runtime-update-compatibility"></a>

Lambda berusaha untuk menyediakan pembaruan runtime yang kompatibel dengan fungsi yang ada. Namun, seperti halnya patching perangkat lunak, ada kasus yang jarang terjadi di mana pembaruan runtime dapat berdampak negatif pada fungsi yang ada. Misalnya, patch keamanan dapat mengekspos masalah mendasar dengan fungsi yang ada yang bergantung pada perilaku tidak aman sebelumnya.

Saat membangun dan menerapkan fungsi Anda, penting untuk memahami cara mengelola dependensi Anda untuk menghindari potensi ketidakcocokan dengan pembaruan runtime masa depan. Misalnya, fungsi Anda memiliki ketergantungan pada paket A, yang pada gilirannya bergantung pada paket B. Kedua paket disertakan dalam runtime Lambda (misalnya, mereka bisa menjadi bagian dari SDK atau dependensinya, atau bagian dari pustaka sistem runtime).

Pertimbangkan skenario berikut:


| Deployment | Patching kompatibel | Alasan | 
| --- | --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/runtimes-update.html)  | Ya | Pembaruan runtime di masa mendatang untuk paket A dan B kompatibel ke belakang. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/runtimes-update.html)  | Ya | Penerapan Anda diutamakan, sehingga pembaruan runtime future untuk paket A dan B tidak berpengaruh. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/runtimes-update.html)  | Ya\$1 |  Pembaruan runtime di masa mendatang ke paket B kompatibel ke belakang. \$1 Jika A dan B digabungkan dengan erat, masalah kompatibilitas dapat terjadi. Misalnya, `botocore` paket `boto3` dan dalam AWS SDK untuk Python harus digunakan bersama.  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/runtimes-update.html)  | Tidak | Pembaruan runtime di masa mendatang ke paket A mungkin memerlukan versi terbaru dari paket B. Namun, versi paket B yang diterapkan lebih diutamakan, dan mungkin tidak kompatibel dengan versi terbaru dari paket A. | 

Untuk menjaga kompatibilitas dengan pembaruan runtime future, ikuti praktik terbaik berikut:
+ **Jika memungkinkan, paketkan semua dependensi:** Sertakan semua pustaka yang diperlukan, termasuk AWS SDK dan dependensinya, dalam paket penerapan Anda. Ini memastikan serangkaian komponen yang stabil dan kompatibel.
+ **Gunakan runtime yang disediakan SDKs dengan hemat:** Hanya mengandalkan SDK yang disediakan runtime jika Anda tidak dapat menyertakan paket tambahan (misalnya, saat menggunakan editor kode konsol Lambda atau kode sebaris dalam templat). AWS CloudFormation 
+ **Hindari mengganti pustaka sistem:** Jangan gunakan pustaka sistem operasi khusus yang mungkin bertentangan dengan pembaruan runtime masa depan.

## Mode pembaruan runtime
<a name="runtime-management-controls"></a>

Lambda berusaha untuk menyediakan pembaruan runtime yang kompatibel dengan fungsi yang ada. Namun, seperti halnya patching perangkat lunak, ada kasus yang jarang terjadi di mana pembaruan runtime dapat berdampak negatif pada fungsi yang ada. Misalnya, patch keamanan dapat mengekspos masalah mendasar dengan fungsi yang ada yang bergantung pada perilaku tidak aman sebelumnya. Kontrol manajemen runtime Lambda membantu mengurangi risiko dampak pada beban kerja Anda jika terjadi ketidakcocokan versi runtime yang jarang terjadi. Untuk setiap [versi fungsi](configuration-versions.md) (`$LATEST`atau versi yang diterbitkan), Anda dapat memilih salah satu mode pembaruan runtime berikut:
+ **Otomatis (default)** - Secara otomatis memperbarui ke versi runtime terbaru dan aman menggunakan[Peluncuran versi runtime dua fase](#runtime-management-two-phase). Kami merekomendasikan mode ini untuk sebagian besar pelanggan sehingga Anda selalu mendapat manfaat dari pembaruan runtime.
+ **Pembaruan fungsi** - Perbarui ke versi runtime terbaru dan aman saat Anda memperbarui fungsi Anda. Saat memperbarui fungsi, Lambda memperbarui runtime fungsi Anda ke versi runtime terbaru dan aman. Pendekatan ini menyinkronkan pembaruan runtime dengan penerapan fungsi, memberi Anda kendali atas kapan Lambda menerapkan pembaruan runtime. Dengan mode ini, Anda dapat mendeteksi dan mengurangi ketidakcocokan pembaruan runtime yang jarang terjadi lebih awal. Saat menggunakan mode ini, Anda harus memperbarui fungsi secara teratur agar runtime tetap up to date.
+ **Manual** - Perbarui versi runtime Anda secara manual. Anda menentukan versi runtime dalam konfigurasi fungsi Anda. Fungsi ini menggunakan versi runtime ini tanpa batas waktu. Dalam kasus yang jarang terjadi di mana versi runtime baru tidak kompatibel dengan fungsi yang ada, Anda dapat menggunakan mode ini untuk memutar kembali fungsi Anda ke versi runtime sebelumnya. Sebaiknya jangan menggunakan mode **Manual** untuk mencoba mencapai konsistensi runtime di seluruh penerapan. Untuk informasi selengkapnya, lihat [Mengembalikan versi runtime Lambda](runtime-management-rollback.md).

Tanggung jawab untuk menerapkan pembaruan runtime ke fungsi Anda bervariasi sesuai dengan mode pembaruan runtime yang Anda pilih. Untuk informasi selengkapnya, lihat [Memahami model tanggung jawab bersama untuk manajemen runtime Lambda](runtime-management-shared.md).

## Peluncuran versi runtime dua fase
<a name="runtime-management-two-phase"></a>

Lambda memperkenalkan versi runtime baru dengan urutan sebagai berikut:

1. Pada fase pertama, Lambda menerapkan versi runtime baru setiap kali Anda membuat atau memperbarui fungsi. Sebuah fungsi diperbarui saat Anda memanggil operasi [UpdateFunctionCode](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionCode.html)atau [UpdateFunctionConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionConfiguration.html)API.

1. Pada fase kedua, Lambda memperbarui fungsi apa pun yang menggunakan mode pembaruan runtime **Otomatis** dan yang belum diperbarui ke versi runtime yang baru. 

Durasi keseluruhan proses peluncuran bervariasi sesuai dengan beberapa faktor, termasuk tingkat keparahan patch keamanan apa pun yang termasuk dalam pembaruan runtime.

Jika Anda secara aktif mengembangkan dan menerapkan fungsi Anda, kemungkinan besar Anda akan mengambil versi runtime baru selama fase pertama. Ini menyinkronkan pembaruan runtime dengan pembaruan fungsi. Jika versi runtime terbaru berdampak negatif pada aplikasi Anda, pendekatan ini memungkinkan Anda mengambil tindakan korektif yang cepat. Fungsi yang tidak dalam pengembangan aktif masih menerima manfaat operasional dari pembaruan runtime otomatis selama fase kedua.

Pendekatan ini tidak memengaruhi fungsi yang disetel ke **pembaruan Fungsi** atau mode **Manual**. Fungsi yang menggunakan mode **pembaruan Fungsi** menerima pembaruan runtime terbaru hanya ketika Anda membuat atau memperbaruinya. Fungsi yang menggunakan mode **Manual** tidak menerima pembaruan runtime.

Lambda menerbitkan versi runtime baru secara bertahap dan bergulir. Wilayah AWS Jika fungsi Anda disetel ke mode **pembaruan **Otomatis** atau Fungsi**, kemungkinan fungsi yang diterapkan secara bersamaan ke Wilayah yang berbeda, atau pada waktu yang berbeda di Wilayah yang sama, akan mengambil versi runtime yang berbeda. Pelanggan yang memerlukan konsistensi versi runtime yang dijamin di seluruh lingkungan mereka harus [menggunakan gambar kontainer untuk menerapkan fungsi Lambda](images-create.md) mereka. Mode **Manual** dirancang sebagai mitigasi sementara untuk mengaktifkan rollback versi runtime jika versi runtime tidak kompatibel dengan fungsi Anda.

# Mengonfigurasi pengaturan manajemen runtime Lambda
<a name="runtime-management-configure-settings"></a>

Anda dapat mengonfigurasi pengaturan manajemen runtime menggunakan konsol Lambda atau () AWS Command Line Interface .AWS CLI

**catatan**  
Anda dapat mengonfigurasi pengaturan manajemen runtime secara terpisah untuk setiap [versi fungsi](configuration-versions.md).

**Untuk mengonfigurasi cara Lambda memperbarui versi runtime Anda (konsol)**

1. Buka [Halaman fungsi](https://console.aws.amazon.com/lambda/home#/functions) di konsol Lambda.

1. Pilih nama sebuah fungsi.

1. Pada tab **Kode**, di bawah **Pengaturan runtime**, pilih **Edit konfigurasi manajemen runtime**.

1. Di bawah **Konfigurasi manajemen runtime**, pilih salah satu dari berikut ini:
   + Agar fungsi Anda diperbarui ke versi runtime terbaru secara otomatis, pilih **Otomatis**.
   + Agar fungsi Anda diperbarui ke versi runtime terbaru saat Anda mengubah fungsi, pilih **Pembaruan fungsi**.
   + **Agar fungsi Anda diperbarui ke versi runtime terbaru hanya ketika Anda mengubah ARN versi runtime, pilih Manual.** Anda dapat menemukan ARN versi runtime **di bawah konfigurasi manajemen Runtime**. Anda juga dapat menemukan ARN di `INIT_START` baris log fungsi Anda.

   Untuk informasi selengkapnya tentang opsi ini, lihat [Mode pembaruan waktu proses](runtimes-update.md#runtime-management-controls).

1. Pilih **Simpan**.

**Untuk mengonfigurasi cara Lambda memperbarui versi runtime Anda ()AWS CLI**

Untuk mengonfigurasi manajemen runtime untuk suatu fungsi, jalankan [put-runtime-management-config](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/put-runtime-management-config.html) AWS CLI perintah. Saat menggunakan `Manual` mode, Anda juga harus menyediakan ARN versi runtime.

```
aws lambda put-runtime-management-config \
  --function-name my-function \
  --update-runtime-on Manual \
  --runtime-version-arn arn:aws:lambda:us-east-2::runtime:8eeff65f6809a3ce81507fe733fe09b835899b99481ba22fd75b5a7338290ec1
```

Anda akan melihat output yang serupa dengan yang berikut:

```
{
  "UpdateRuntimeOn": "Manual",
  "FunctionArn": "arn:aws:lambda:us-east-2:111122223333:function:my-function",
  "RuntimeVersionArn": "arn:aws:lambda:us-east-2::runtime:8eeff65f6809a3ce81507fe733fe09b835899b99481ba22fd75b5a7338290ec1"
}
```

# Mengembalikan versi runtime Lambda
<a name="runtime-management-rollback"></a>

Jika versi runtime baru tidak kompatibel dengan fungsi yang ada, Anda dapat memutar kembali versi runtime ke versi sebelumnya. Ini membuat aplikasi Anda tetap berfungsi dan meminimalkan gangguan, memberikan waktu untuk memperbaiki ketidakcocokan sebelum kembali ke versi runtime terbaru.

Lambda tidak memaksakan batas waktu berapa lama Anda dapat menggunakan versi runtime tertentu. Namun, kami sangat menyarankan untuk memperbarui ke versi runtime terbaru sesegera mungkin untuk mendapatkan manfaat dari patch keamanan terbaru, peningkatan kinerja, dan fitur. Lambda menyediakan opsi untuk memutar kembali ke versi runtime sebelumnya hanya sebagai mitigasi sementara jika terjadi masalah kompatibilitas pembaruan runtime yang jarang terjadi. Fungsi yang menggunakan versi runtime sebelumnya untuk jangka waktu yang lama pada akhirnya dapat mengalami penurunan kinerja atau masalah, seperti kedaluwarsa sertifikat, yang dapat menyebabkan mereka berhenti bekerja dengan benar.

Anda dapat memutar kembali versi runtime dengan cara berikut:
+ [Menggunakan mode pembaruan runtime Manual](#runtime-management-rollback-manual)
+ [Menggunakan versi fungsi yang diterbitkan](#runtime-management-rollback-published)

Untuk informasi selengkapnya, lihat [Memperkenalkan kontrol manajemen AWS Lambda runtime](https://aws.amazon.com/blogs/compute/introducing-aws-lambda-runtime-management-controls/) di Blog AWS Compute.

## Kembalikan versi runtime menggunakan mode pembaruan runtime Manual
<a name="runtime-management-rollback-manual"></a>

**Jika Anda menggunakan mode pembaruan versi runtime **otomatis**, atau menggunakan versi `$LATEST` runtime, Anda dapat memutar kembali versi runtime menggunakan mode Manual.** Untuk [versi fungsi](configuration-versions.md) yang ingin Anda putar kembali, ubah mode pembaruan versi runtime ke **Manual** dan tentukan ARN dari versi runtime sebelumnya. Untuk informasi selengkapnya tentang menemukan ARN dari versi runtime sebelumnya, lihat. [Mengidentifikasi perubahan versi runtime Lambda](runtime-management-identify.md)

**catatan**  
Jika `$LATEST` versi fungsi Anda dikonfigurasi untuk menggunakan mode **Manual**, maka Anda tidak dapat mengubah arsitektur CPU atau versi runtime yang digunakan fungsi Anda. Untuk membuat perubahan ini, Anda harus mengubah ke mode **pembaruan **Otomatis** atau Fungsi**.

## Kembalikan versi runtime menggunakan versi fungsi yang diterbitkan
<a name="runtime-management-rollback-published"></a>

[Versi fungsi](configuration-versions.md) yang diterbitkan adalah snapshot yang tidak dapat diubah dari kode `$LATEST` fungsi dan konfigurasi pada saat Anda membuatnya. Dalam mode **Otomatis**, Lambda secara otomatis memperbarui versi runtime dari versi fungsi yang diterbitkan selama fase dua peluncuran versi runtime. Dalam mode **pembaruan Fungsi**, Lambda tidak memperbarui versi runtime dari versi fungsi yang diterbitkan.

Versi fungsi yang diterbitkan menggunakan mode **pembaruan Fungsi** karenanya membuat snapshot statis dari kode fungsi, konfigurasi, dan versi runtime. Dengan menggunakan mode **pembaruan Fungsi** dengan versi fungsi, Anda dapat menyinkronkan pembaruan runtime dengan penerapan Anda. Anda juga dapat mengoordinasikan rollback versi kode, konfigurasi, dan runtime dengan mengarahkan lalu lintas ke versi fungsi yang diterbitkan sebelumnya. Anda dapat mengintegrasikan pendekatan ini ke dalam integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD) untuk rollback otomatis sepenuhnya jika terjadi ketidakcocokan pembaruan runtime yang jarang terjadi. Saat menggunakan pendekatan ini, Anda harus memperbarui fungsi Anda secara teratur dan menerbitkan versi fungsi baru untuk mengambil pembaruan runtime terbaru. Untuk informasi selengkapnya, lihat [Memahami model tanggung jawab bersama untuk manajemen runtime Lambda](runtime-management-shared.md).

# Mengidentifikasi perubahan versi runtime Lambda
<a name="runtime-management-identify"></a>

[Nomor versi runtime](runtimes-update.md) [dan ARN dicatat di `INIT_START` baris log, yang dipancarkan Lambda CloudWatch ke Log setiap kali menciptakan lingkungan eksekusi baru.](concepts-basics.md#gettingstarted-concepts-runtime) Karena lingkungan eksekusi menggunakan versi runtime yang sama untuk semua pemanggilan fungsi, Lambda memancarkan `INIT_START` baris log hanya ketika Lambda mengeksekusi fase init. Lambda tidak memancarkan baris log ini untuk setiap pemanggilan fungsi. Lambda memancarkan baris log ke CloudWatch Log, tetapi tidak terlihat di konsol. 

**catatan**  
Nomor versi runtime tidak selalu berurutan. Misalnya, versi 42 mungkin diikuti oleh versi 45.

**Example Contoh baris log INIT\$1START**  

```
INIT_START Runtime Version: python:3.13.v14    Runtime Version ARN: arn:aws:lambda:eu-south-1::runtime:7b620fc2e66107a1046b140b9d320295811af3ad5d4c6a011fad1fa65127e9e6I
```

Daripada bekerja secara langsung dengan log, Anda dapat menggunakan [Amazon CloudWatch Contributor Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ContributorInsights-CreateRule.html) untuk mengidentifikasi transisi antar versi runtime. Aturan berikut menghitung versi runtime yang berbeda dari setiap baris `INIT_START` log. Untuk menggunakan aturan, ganti contoh nama grup log `/aws/lambda/*` dengan awalan yang sesuai untuk fungsi atau grup fungsi Anda.

```
{
  "Schema": {
    "Name": "CloudWatchLogRule",
    "Version": 1
  },
  "AggregateOn": "Count",
  "Contribution": {
    "Filters": [
      {
        "Match": "eventType",
        "In": [
          "INIT_START"
        ]
      }
    ],
    "Keys": [
      "runtimeVersion",
      "runtimeVersionArn"
    ]
  },
  "LogFormat": "CLF",
  "LogGroupNames": [
    "/aws/lambda/*"
  ],
  "Fields": {
    "1": "eventType",
    "4": "runtimeVersion",
    "8": "runtimeVersionArn"
  }
}
```

Laporan CloudWatch Contributor Insights berikut menunjukkan contoh transisi versi runtime seperti yang ditangkap oleh aturan sebelumnya. **Baris oranye menunjukkan inisialisasi lingkungan eksekusi untuk versi runtime sebelumnya (**python: 3.13.v12**), dan garis biru menunjukkan inisialisasi lingkungan eksekusi untuk versi runtime baru (python: 3.13.v14).**

![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/runtime_version_graph.png)


# Memahami model tanggung jawab bersama untuk manajemen runtime Lambda
<a name="runtime-management-shared"></a>

Lambda bertanggung jawab untuk mengkurasi dan menerbitkan pembaruan keamanan untuk semua runtime terkelola dan gambar kontainer yang didukung. Tanggung jawab untuk memperbarui fungsi yang ada untuk menggunakan versi runtime terbaru bervariasi tergantung pada mode pembaruan runtime yang Anda gunakan.

Lambda bertanggung jawab untuk menerapkan pembaruan runtime ke semua fungsi yang dikonfigurasi untuk menggunakan mode Pembaruan runtime **Otomatis**.

Untuk fungsi yang dikonfigurasi dengan mode **pembaruan runtime pembaruan Fungsi**, Anda bertanggung jawab untuk memperbarui fungsi secara teratur. Lambda bertanggung jawab untuk menerapkan pembaruan runtime saat Anda melakukan pembaruan tersebut. Jika Anda tidak memperbarui fungsi Anda, maka Lambda tidak memperbarui runtime. Jika Anda tidak memperbarui fungsi Anda secara teratur, maka kami sangat menyarankan untuk mengonfigurasinya untuk pembaruan runtime otomatis sehingga terus menerima pembaruan keamanan.

Untuk fungsi yang dikonfigurasi untuk menggunakan mode pembaruan runtime **Manual**, Anda bertanggung jawab untuk memperbarui fungsi agar menggunakan versi runtime terbaru. Kami sangat menyarankan Anda menggunakan mode ini hanya untuk memutar kembali versi runtime sebagai mitigasi sementara jika terjadi ketidakcocokan pembaruan runtime yang jarang terjadi. Kami juga menyarankan agar Anda mengubah ke mode **Otomatis** secepat mungkin untuk meminimalkan waktu di mana fungsi Anda tidak ditambal.

Jika Anda [menggunakan gambar kontainer untuk menerapkan fungsi Anda](images-create.md), Lambda bertanggung jawab untuk menerbitkan gambar dasar yang diperbarui. Dalam hal ini, Anda bertanggung jawab untuk membangun kembali image kontainer fungsi Anda dari image dasar terbaru dan menerapkan kembali image container.

Ini dirangkum dalam tabel berikut:


****  

| Mode deployment | Tanggung jawab Lambda | Tanggung jawab pelanggan | 
| --- | --- | --- | 
| Runtime terkelola, mode Otomatis |  Publikasikan versi runtime baru yang berisi tambalan terbaru. Terapkan patch runtime ke fungsi yang ada.  | Kembalikan ke versi runtime sebelumnya jika terjadi masalah kompatibilitas pembaruan runtime yang jarang terjadi. Ikuti praktik terbaik untuk [kompatibilitas mundur](runtimes-update.md#runtime-update-compatibility). | 
| Runtime terkelola, Mode pembaruan Fungsi | Publikasikan versi runtime baru yang berisi tambalan terbaru. |  Perbarui fungsi secara teratur untuk mengambil versi runtime terbaru. Ganti fungsi ke mode **Otomatis** saat Anda tidak memperbarui fungsi secara teratur. Kembalikan ke versi runtime sebelumnya jika terjadi masalah kompatibilitas pembaruan runtime yang jarang terjadi. Ikuti praktik terbaik untuk [kompatibilitas mundur](runtimes-update.md#runtime-update-compatibility).  | 
| Runtime terkelola, mode Manual | Publikasikan versi runtime baru yang berisi tambalan terbaru. |  Gunakan mode ini hanya untuk rollback runtime sementara jika terjadi masalah kompatibilitas pembaruan runtime yang jarang terjadi. Ganti fungsi ke mode **pembaruan **Otomatis** atau Fungsi** dan versi runtime terbaru sesegera mungkin.  | 
| Gambar kontainer | Publikasikan gambar kontainer baru yang berisi tambalan terbaru. | Menerapkan ulang fungsi secara teratur menggunakan gambar dasar kontainer terbaru untuk mengambil tambalan terbaru. | 

Untuk informasi selengkapnya tentang tanggung jawab bersama AWS, lihat [Model Tanggung Jawab Bersama](https://aws.amazon.com/compliance/shared-responsibility-model/).

# Mengontrol izin pembaruan runtime Lambda untuk aplikasi dengan kepatuhan tinggi
<a name="runtime-management-hc-applications"></a>

Untuk memenuhi persyaratan penambalan, pelanggan Lambda biasanya mengandalkan pembaruan runtime otomatis. Jika aplikasi Anda tunduk pada persyaratan kesegaran penambalan yang ketat, Anda mungkin ingin membatasi penggunaan versi runtime sebelumnya. Anda dapat membatasi kontrol manajemen runtime Lambda dengan menggunakan AWS Identity and Access Management (IAM) untuk menolak pengguna di akses AWS akun Anda ke operasi API. [PutRuntimeManagementConfig](https://docs.aws.amazon.com/lambda/latest/api/API_PutRuntimeManagementConfig.html) Operasi ini digunakan untuk memilih mode pembaruan runtime untuk suatu fungsi. Menolak akses ke operasi ini menyebabkan semua fungsi default ke mode **Otomatis**. Anda dapat menerapkan pembatasan ini di seluruh organisasi Anda dengan menggunakan [kebijakan kontrol layanan (SCP](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)). Jika Anda harus memutar kembali fungsi ke versi runtime yang lebih lama, Anda dapat memberikan pengecualian kebijakan case-by-case berdasarkan.

# Mengambil data tentang fungsi Lambda yang menggunakan runtime usang
<a name="runtimes-list-deprecated"></a>

Saat runtime Lambda mendekati penghentian, Lambda memberi tahu Anda melalui email dan memberikan pemberitahuan di dan. Dasbor Health Trusted Advisor Email dan notifikasi ini mencantumkan versi fungsi \$1 LATEST menggunakan runtime. Untuk mencantumkan semua versi fungsi yang menggunakan runtime tertentu, Anda dapat menggunakan AWS Command Line Interface (AWS CLI) atau salah satu versi. AWS SDKs

Jika Anda memiliki sejumlah besar fungsi yang menggunakan runtime yang seharusnya tidak digunakan lagi, Anda juga dapat menggunakan AWS CLI atau untuk membantu Anda memprioritaskan pembaruan AWS SDKs ke fungsi yang paling sering dipanggil.

Lihat bagian berikut untuk mempelajari cara menggunakan AWS CLI dan AWS SDKs mengumpulkan data tentang fungsi yang menggunakan runtime tertentu.

## Daftar versi fungsi yang menggunakan runtime tertentu
<a name="runtimes-list-deprecated-versions"></a>

Untuk menggunakan daftar semua versi fungsi Anda yang menggunakan runtime tertentu, jalankan perintah berikut. AWS CLI Ganti `RUNTIME_IDENTIFIER` dengan nama runtime yang sudah tidak digunakan lagi dan pilih sendiri. Wilayah AWS Untuk daftar hanya versi fungsi \$1LATEST, hilangkan `--function-version ALL` dari perintah.

```
aws lambda list-functions --function-version ALL --region us-east-1 --output text --query "Functions[?Runtime=='RUNTIME_IDENTIFIER'].FunctionArn" 
```

**Tip**  
Contoh perintah mencantumkan fungsi di `us-east-1` wilayah untuk tertentu Akun AWS Anda harus mengulangi perintah ini untuk setiap wilayah di mana akun Anda memiliki fungsi dan untuk masing-masing Akun AWS.

Anda juga dapat membuat daftar fungsi yang menggunakan runtime tertentu menggunakan salah satu fungsi. AWS SDKs Kode contoh berikut menggunakan V3 AWS SDK untuk JavaScript dan AWS SDK untuk Python (Boto3) untuk mengembalikan daftar fungsi ARNs untuk fungsi menggunakan runtime tertentu. Kode contoh juga mengembalikan grup CloudWatch log untuk masing-masing fungsi yang terdaftar. Anda dapat menggunakan grup log ini untuk menemukan tanggal pemanggilan terakhir untuk fungsi tersebut. Lihat bagian berikut [Mengidentifikasi fungsi yang paling umum dan paling baru dipanggil](#runtimes-list-deprecated-statistics) untuk informasi lebih lanjut.

------
#### [ Node.js ]

**Example JavaScript kode untuk daftar fungsi menggunakan runtime tertentu**  

```
import { LambdaClient, ListFunctionsCommand } from "@aws-sdk/client-lambda";
const lambdaClient = new LambdaClient();

const command = new ListFunctionsCommand({
    FunctionVersion: "ALL",
    MaxItems: 50
});
const response = await lambdaClient.send(command);

for (const f of response.Functions){
    if (f.Runtime == '<your_runtime>'){ // Use the runtime id, e.g. 'nodejs24.x' or 'python3.14'
        console.log(f.FunctionArn);
        // get the CloudWatch log group of the function to
        // use later for finding the last invocation date
        console.log(f.LoggingConfig.LogGroup);
    }   
}
// If your account has more functions than the specified
// MaxItems, use the returned pagination token in the 
// next request with the 'Marker' parameter
if ('NextMarker' in response){
    let paginationToken = response.NextMarker;
  }
```

------
#### [ Python ]

**Example Kode Python untuk mencantumkan fungsi menggunakan runtime tertentu**  

```
import boto3
from botocore.exceptions import ClientError

def list_lambda_functions(target_runtime):

    lambda_client = boto3.client('lambda')
    
    response = lambda_client.list_functions(
        FunctionVersion='ALL',
        MaxItems=50
    )
    if not response['Functions']:
            print("No Lambda functions found")
    else: 
        for function in response['Functions']:   
            if function['PackageType']=='Zip' and function['Runtime'] == target_runtime: 
                print(function['FunctionArn'])
                # Print the CloudWatch log group of the function
                # to use later for finding last invocation date
                print(function['LoggingConfig']['LogGroup'])

    if 'NextMarker' in response:
       pagination_token = response['NextMarker']

if __name__ == "__main__":
    # Replace python3.12 with the appropriate runtime ID for your Lambda functions
    list_lambda_functions('python3.12')
```

------

Untuk mempelajari lebih lanjut tentang menggunakan AWS SDK untuk mencantumkan fungsi Anda menggunakan [ListFunctions](https://docs.aws.amazon.com/lambda/latest/api/API_ListFunctions.html)tindakan, lihat [dokumentasi SDK](https://aws.amazon.com/developer/tools/) untuk bahasa pemrograman pilihan Anda.

Anda juga dapat menggunakan fitur Kueri AWS Config lanjutan untuk mencantumkan semua fungsi yang menggunakan runtime yang terpengaruh. Kueri ini hanya mengembalikan fungsi \$1LATEST versi, tetapi Anda dapat menggabungkan kueri ke daftar fungsi di semua wilayah dan beberapa Akun AWS dengan satu perintah. Untuk mempelajari selengkapnya, lihat [Menanyakan Status AWS Auto Scaling Sumber Daya Konfigurasi Saat Ini](https://docs.aws.amazon.com/config/latest/developerguide/querying-AWS-resources.html) di *Panduan AWS Config Pengembang*.

## Mengidentifikasi fungsi yang paling umum dan paling baru dipanggil
<a name="runtimes-list-deprecated-statistics"></a>

Jika Akun AWS berisi fungsi yang menggunakan runtime yang seharusnya tidak digunakan lagi, Anda mungkin ingin memprioritaskan fungsi pembaruan yang sering dipanggil atau fungsi yang baru saja dipanggil.

Jika Anda hanya memiliki beberapa fungsi, Anda dapat menggunakan konsol CloudWatch Log untuk mengumpulkan informasi ini dengan melihat aliran log fungsi Anda. [Lihat Melihat data log yang dikirim ke CloudWatch Log](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html#ViewingLogData) untuk informasi selengkapnya.

Untuk melihat jumlah pemanggilan fungsi terbaru, Anda juga dapat menggunakan informasi CloudWatch metrik yang ditampilkan di konsol Lambda. Untuk melihat informasi ini, lakukan hal berikut:

1. Buka [halaman Fungsi](https://console.aws.amazon.com/lambda/home#/functions) di konsol Lambda.

1. Pilih fungsi yang ingin Anda lihat statistik pemanggilan.

1. Pilih tab **Pantau**.

1. Tetapkan periode waktu yang ingin Anda lihat statistik untuk menggunakan pemilih rentang tanggal. Pemanggilan terbaru ditampilkan di panel **Pemanggilan**.

Untuk akun dengan jumlah fungsi yang lebih besar, dapat lebih efisien untuk mengumpulkan data ini secara terprogram menggunakan AWS CLI atau salah satu dari tindakan AWS SDKs penggunaan [DescribeLogStreams](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_DescribeLogStreams.html)dan [GetMetricStatistics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricStatistics.html)API.

Contoh berikut menyediakan cuplikan kode menggunakan V3 AWS SDK untuk JavaScript dan AWS SDK untuk Python (Boto3) untuk mengidentifikasi tanggal pemanggilan terakhir untuk fungsi tertentu dan untuk menentukan jumlah pemanggilan untuk fungsi tertentu dalam 14 hari terakhir.

------
#### [ Node.js ]

**Example JavaScript kode untuk menemukan waktu pemanggilan terakhir untuk suatu fungsi**  

```
import { CloudWatchLogsClient, DescribeLogStreamsCommand } from "@aws-sdk/client-cloudwatch-logs";
const cloudWatchLogsClient = new CloudWatchLogsClient();
const command = new DescribeLogStreamsCommand({
    logGroupName: '<your_log_group_name>',
    orderBy: 'LastEventTime',
    descending: true,
    limit: 1
});
try {
    const response = await cloudWatchLogsClient.send(command);
    const lastEventTimestamp = response.logStreams.length > 0 ? 
        response.logStreams[0].lastEventTimestamp : null;
    // Convert the UNIX timestamp to a human-readable format for display
    const date = new Date(lastEventTimestamp).toLocaleDateString();
    const time = new Date(lastEventTimestamp).toLocaleTimeString();
    console.log(`${date} ${time}`);
    
} catch (e){
    console.error('Log group not found.')
}
```

------
#### [ Python ]

**Example Kode Python untuk menemukan waktu pemanggilan terakhir untuk suatu fungsi**  

```
import boto3
from datetime import datetime

cloudwatch_logs_client  = boto3.client('logs')

response = cloudwatch_logs_client.describe_log_streams(
    logGroupName='<your_log_group_name>',
    orderBy='LastEventTime',
    descending=True,
    limit=1
)

try:
    if len(response['logStreams']) > 0:
        last_event_timestamp = response['logStreams'][0]['lastEventTimestamp']
        print(datetime.fromtimestamp(last_event_timestamp/1000)) # Convert timestamp from ms to seconds
    else:
        last_event_timestamp = None
except:
    print('Log group not found')
```

------

**Tip**  
Anda dapat menemukan nama grup log fungsi Anda menggunakan operasi [ListFunctions](https://docs.aws.amazon.com/lambda/latest/api/API_ListFunctions.html)API. Lihat kode di [Daftar versi fungsi yang menggunakan runtime tertentu](#runtimes-list-deprecated-versions) untuk contoh bagaimana melakukan ini.

------
#### [ Node.js ]

**Example JavaScript kode untuk menemukan jumlah pemanggilan dalam 14 hari terakhir**  

```
import { CloudWatchClient, GetMetricStatisticsCommand } from "@aws-sdk/client-cloudwatch";
const cloudWatchClient = new CloudWatchClient();
const command = new GetMetricStatisticsCommand({
    Namespace: 'AWS/Lambda',
    MetricName: 'Invocations',
    StartTime: new Date(Date.now()-86400*1000*14), // 14 days ago
    EndTime: new Date(Date.now()),
    Period: 86400 * 14, // 14 days.
    Statistics: ['Sum'],
    Dimensions: [{
        Name: 'FunctionName',
        Value: '<your_function_name>'
    }]
});
const response = await cloudWatchClient.send(command);
const invokesInLast14Days = response.Datapoints.length > 0 ? 
    response.Datapoints[0].Sum : 0;

console.log('Number of invocations: ' + invokesInLast14Days);
```

------
#### [ Python ]

**Example Kode Python untuk menemukan jumlah pemanggilan dalam 14 hari terakhir**  

```
import boto3
from datetime import datetime, timedelta

cloudwatch_client = boto3.client('cloudwatch')

response = cloudwatch_client.get_metric_statistics(
    Namespace='AWS/Lambda',
    MetricName='Invocations',
    Dimensions=[
        {
            'Name': 'FunctionName',
            'Value': '<your_function_name>'
        },
    ],
    StartTime=datetime.now() - timedelta(days=14),
    EndTime=datetime.now(),
    Period=86400 * 14, # 14 days
    Statistics=[
        'Sum'
    ]
)

if len(response['Datapoints']) > 0:
    invokes_in_last_14_days = int(response['Datapoints'][0]['Sum'])
else:
    invokes_in_last_14_days = 0

print(f'Number of invocations: {invokes_in_last_14_days}')
```

------

# Memodifikasi lingkungan waktu pengoperasian
<a name="runtimes-modify"></a>

Anda dapat menggunakan [ekstensi internal](lambda-extensions.md) untuk memodifikasi proses waktu pengoperasian. Ekstensi internal bukan proses terpisah—ekstensi ini berjalan sebagai bagian dari proses waktu pengoperasian.

Lambda menyediakan [variabel lingkungan](configuration-envvars.md) spesifik bahasa yang dapat Anda atur untuk menambahkan opsi dan alat pada waktu pengoperasian. Lambda juga menyediakan [skrip pembungkus](#runtime-wrapper), yang memungkinkan Lambda mendelegasikan startup waktu pengoperasian ke skrip Anda. Anda dapat membuat skrip pembungkus untuk mengustomisasikan perilaku startup waktu pengoperasian.

## Variabel lingkungan spesifik bahasa
<a name="runtimes-envvars"></a>

Lambda mendukung cara konfigurasi saja untuk mengaktifkan kode yang akan dipramuat selama inisialisasi fungsi melalui variabel lingkungan spesifik bahasa berikut:
+ `JAVA_TOOL_OPTIONS`— Di Java, Lambda mendukung variabel lingkungan ini untuk mengatur variabel baris perintah tambahan di Lambda. Variabel lingkungan ini memungkinkan Anda menentukan inisialisasi alat, khususnya peluncuran agen bahasa pemrograman asli atau Java menggunakan opsi `agentlib` atau `javaagent`. Untuk informasi selengkapnya, lihat [variabel `JAVA_TOOL_OPTIONS` lingkungan](https://docs.aws.amazon.com/lambda/latest/dg/java-customization.html#java-tool-options).
+ `NODE_OPTIONS`- Tersedia di [runtime Node.js](lambda-nodejs.md).
+ `DOTNET_STARTUP_HOOKS` – Pada NET Core 3.1 dan di atas, variabel lingkungan ini menentukan jalur ke rakitan (dll) yang dapat Lambda gunakan.

Menggunakan variabel lingkungan spesifik bahasa adalah cara yang lebih disukai untuk mengatur properti startup.

## Skrip pembungkus
<a name="runtime-wrapper"></a>

Anda dapat membuat *skrip pembungkus* untuk mengustomisasikan perilaku startup waktu pengoperasian fungsi Lambda. Skrip pembungkus memungkinkan Anda mengatur parameter konfigurasi yang tidak dapat diatur melalui variabel lingkungan spesifik bahasa.

**catatan**  
Invokasi dapat gagal jika skrip pembungkus tidak berhasil memulai proses waktu pengoperasian.

[Skrip pembungkus didukung pada semua runtime Lambda asli.](lambda-runtimes.md) Skrip pembungkus tidak didukung pada [Runtime khusus OS](runtimes-provided.md) (keluarga `provided` runtime).

Saat Anda menggunakan skrip pembungkus untuk fungsi, Lambda memulai waktu pengoperasian menggunakan skrip Anda. Lambda mengirim ke skrip Anda jalur ke interpreter dan semua argumen asli untuk startup waktu pengoperasian standar. Skrip Anda dapat memperluas atau mengubah perilaku startup program. Misalnya, skrip dapat menyuntikkan dan mengubah argumen, mengatur variabel lingkungan, atau menangkap metrik, kesalahan, dan informasi diagnostik lainnya.

Anda menentukan skrip dengan mengatur nilai dari variabel lingkungan `AWS_LAMBDA_EXEC_WRAPPER` sebagai jalur sistem file dari biner atau skrip yang dapat dijalankan.

### Contoh: Buat dan gunakan skrip pembungkus sebagai lapisan Lambda
<a name="runtime-wrapper-example"></a>

Dalam contoh berikut, Anda membuat skrip pembungkus untuk memulai interpreter Python dengan opsi `-X importtime`. Saat Anda menjalankan fungsi, Lambda membuat entri log untuk menampilkan durasi waktu impor untuk tiap impor.

**Untuk membuat dan menggunakan skrip pembungkus sebagai lapisan**

1. Buat direktori untuk layer:

   ```
   mkdir -p python-wrapper-layer/bin
   cd python-wrapper-layer/bin
   ```

1. Dalam `bin` direktori, paste kode berikut ke dalam file baru bernama`importtime_wrapper`. Ini adalah skrip pembungkus.

   ```
   #!/bin/bash
   
   # the path to the interpreter and all of the originally intended arguments
   args=("$@")
   
   # the extra options to pass to the interpreter
   extra_args=("-X" "importtime")
   
   # insert the extra options
   args=("${args[@]:0:$#-1}" "${extra_args[@]}" "${args[@]: -1}")
   
   # start the runtime with the extra options
   exec "${args[@]}"
   ```

1. Berikan izin yang dapat dieksekusi skrip:

   ```
   chmod +x importtime_wrapper
   ```

1. Buat file.zip untuk layer:

   ```
   cd ..
   zip -r ../python-wrapper-layer.zip .
   ```

1. Konfirmasikan bahwa file.zip Anda memiliki struktur direktori berikut:

   ```
   python-wrapper-layer.zip
   └ bin
       └ importtime_wrapper
   ```

1. [Buat layer](creating-deleting-layers.md#layers-create) menggunakan paket.zip.

1. Buat fungsi menggunakan konsol Lambda.

   1. Buka [konsol Lambda](https://console.aws.amazon.com/lambda).

   1. Pilih **Buat fungsi**.

   1. Masukkan **nama Fungsi**.

   1. Untuk **Runtime, pilih runtime** Python **terbaru yang didukung**.

   1. Pilih **Buat fungsi**.

1. Tambahkan lapisan ke fungsi Anda.

   1. Pilih fungsi Anda, lalu pilih tab **Kode** jika belum dipilih.

   1. Gulir ke bawah ke bagian **Layers**, lalu pilih **Add a layer**.

   1. Untuk **sumber Layer**, pilih **Custom layers**, dan kemudian pilih layer Anda dari daftar dropdown **Custom layers**.

   1.  Untuk **Versi**, pilih **1**.

   1. Pilih **Tambahkan**.

1. Tambahkan variabel lingkungan pembungkus.

   1. Pilih tab **Konfigurasi**, lalu pilih **variabel Lingkungan**.

   1. Pada **Variabel lingkungan**, pilih **Edit**.

   1. Pilih **Tambahkan variabel lingkungan**.

   1. Untuk **Kunci**, masukkan `AWS_LAMBDA_EXEC_WRAPPER`.

   1. Untuk **Nilai**, masukkan `/opt/bin/importtime_wrapper` (`/opt/`\$1 struktur folder lapisan.zip Anda).

   1. Pilih **Simpan**.

1. Uji skrip pembungkus.

   1. Pilih tab **Uji**.

   1. Di bawah **acara Uji**, pilih **Uji**. Anda tidak perlu membuat acara pengujian—acara default akan berfungsi.

   1. Gulir ke bawah ke **Keluaran Log**. Karena skrip pembungkus Anda memulai interpreter Python dengan opsi `-X importtime`, log menunjukkan waktu yang diperlukan untuk setiap impor. Sebagai contoh:

      ```
      532 |           collections
      import time:        63 |         63 |           _functools
      import time:      1053 |       3646 |         functools
      import time:      2163 |       7499 |       enum
      import time:       100 |        100 |         _sre
      import time:       446 |        446 |           re._constants
      import time:       691 |       1136 |         re._parser
      import time:       378 |        378 |         re._casefix
      import time:       670 |       2283 |       re._compiler
      import time:       416 |        416 |       copyreg
      ```

# Menggunakan API runtime Lambda untuk runtime kustom
<a name="runtimes-api"></a>

AWS Lambda [menyediakan API HTTP untuk [runtime kustom](runtimes-custom.md) untuk menerima acara pemanggilan dari Lambda dan mengirim data respons kembali dalam lingkungan eksekusi Lambda.](lambda-runtimes.md) Bagian ini berisi referensi API untuk API runtime Lambda.

**Instans Terkelola Lambda mendukung permintaan bersamaan**  
Instans Terkelola Lambda menggunakan API runtime yang sama dengan fungsi Lambda (default). Perbedaan utamanya adalah Instans Terkelola dapat menerima secara bersamaan `/next` dan `/response` permintaan hingga batas yang dikonfigurasi`AWS_LAMBDA_MAX_CONCURRENCY`. Hal ini memungkinkan beberapa pemanggilan untuk diproses secara bersamaan dalam lingkungan eksekusi tunggal. Untuk informasi selengkapnya tentang Instans Terkelola, lihat[Memahami lingkungan eksekusi Instans Terkelola Lambda](lambda-managed-instances-execution-environment.md).

![\[Diagram arsitektur untuk lingkungan eksekusi.\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/telemetry-api-concept-diagram.png)


Spesifikasi OpenAPI untuk versi API runtime **2018-06-01** tersedia di [runtime-api.zip](samples/runtime-api.zip)

Untuk membuat URL permintaan API, runtime mendapatkan titik akhir API dari variabel lingkungan `AWS_LAMBDA_RUNTIME_API`, menambahkan versi API, dan menambahkan jalur sumber daya yang diinginkan.

**Example Permintaan**  

```
curl "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/next"
```

**Topics**
+ [

## Invokasi berikutnya
](#runtimes-api-next)
+ [

## Respons invokasi
](#runtimes-api-response)
+ [

## Kesalahan inisialisasi
](#runtimes-api-initerror)
+ [

## Kesalahan invokasi
](#runtimes-api-invokeerror)

## Invokasi berikutnya
<a name="runtimes-api-next"></a>

**Jalur** – `/runtime/invocation/next`

**Metode** – **GET**

Runtime mengirimkan pesan ini ke Lambda untuk meminta peristiwa invokasi. Isi respons berisi muatan dari invokasi, yang merupakan dokumen JSON yang berisi data kejadian dari pemicu fungsi. Header respons berisi data tambahan tentang invokasi.

**Header respons**
+ `Lambda-Runtime-Aws-Request-Id` – ID permintaan, yang mengidentifikasi permintaan pemicu invokasi fungsi.

  Misalnya, `8476a536-e9f4-11e8-9739-2dfe598c3fcd`.
+ `Lambda-Runtime-Deadline-Ms` – Tanggal saat fungsi berakhir, dalam milidetik waktu Unix. 

  Misalnya, `1542409706888`.
+ `Lambda-Runtime-Invoked-Function-Arn` – ARN dari fungsi, versi, atau alias Lambda yang ditentukan dalam invokasi. 

  Misalnya, `arn:aws:lambda:us-east-2:123456789012:function:custom-runtime`.
+ `Lambda-Runtime-Trace-Id` – [Header pelacakan AWS X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/xray-concepts.html#xray-concepts-tracingheader). 

  Misalnya, `Root=1-5bef4de7-ad49b0e87f6ef6c87fc2e700;Parent=9a9197af755a6419;Sampled=1`.
+ `Lambda-Runtime-Client-Context`— Untuk pemanggilan dari AWS Mobile SDK, data tentang aplikasi dan perangkat klien.
+ `Lambda-Runtime-Cognito-Identity`— Untuk pemanggilan dari AWS Mobile SDK, data tentang penyedia identitas Amazon Cognito.

Jangan atur waktu habis permintaan `GET` karena respons dapat tertunda. Antara saat Lambda melakukan bootstrap pada waktu pengoperasian dan saat waktu pengoperasian memiliki kejadian untuk dikembalikan, proses waktu pengoperasian mungkin dibekukan selama beberapa detik.

ID permintaan melacak invokasi di dalam Lambda. Gunakan untuk menentukan invokasi saat Anda mengirim respons.

Header pelacakan berisi ID jejak, ID induk, dan keputusan penyampelan. Jika permintaan diambil sampelnya, permintaan diambil sampelnya oleh Lambda atau layanan hulu. Waktu pengoperasian harus menetapkan `_X_AMZN_TRACE_ID` dengan nilai header. X-Ray SDK membaca ini untuk mendapatkan IDs dan menentukan apakah akan melacak permintaan.

## Respons invokasi
<a name="runtimes-api-response"></a>

**Jalur** – `/runtime/invocation/AwsRequestId/response`

**Metode** – **POST**

Setelah fungsi selesai dijalankan, runtime mengirimkan respon invokasi untuk Lambda. Untuk invokasi sinkron, Lambda mengirimkan respons ke klien.

**Example permintaan berhasil**  

```
REQUEST_ID=156cb537-e2d4-11e8-9b34-d36013741fb9
curl "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/$REQUEST_ID/response"  -d "SUCCESS"
```

## Kesalahan inisialisasi
<a name="runtimes-api-initerror"></a>

Jika fungsi mengembalikan kesalahan atau runtime mengalami kesalahan saat inisialisasi, runtime menggunakan metode ini untuk melaporkan kesalahan ke Lambda.

**Jalur** – `/runtime/init/error`

**Metode** – **POST**

**Header**

`Lambda-Runtime-Function-Error-Type`— Jenis kesalahan yang ditemui runtime. Wajib: tidak. 

Header ini terdiri dari nilai string. Lambda menerima string apa pun, tetapi kami merekomendasikan format <category.reason>. Contoh:
+ Runtime. NoSuchHandler
+ Runtime. APIKeyNotFound
+ Runtime. ConfigInvalid
+ Runtime. UnknownReason

**Parameter tubuh**

`ErrorRequest` – Informasi tentang kesalahan. Wajib: tidak. 

Bidang ini adalah objek JSON dengan struktur berikut:

```
{
      errorMessage: string (text description of the error),
      errorType: string,
      stackTrace: array of strings
}
```

Perhatikan bahwa Lambda menerima nilai apa pun untuk `errorType`.

Contoh berikut menunjukkan pesan kesalahan fungsi Lambda ketika fungsi tidak dapat mengurai data peristiwa yang disediakan dalam invokasi.

**Example Kesalahan fungsi**  

```
{
      "errorMessage" : "Error parsing event data.",
      "errorType" : "InvalidEventDataException",
      "stackTrace": [ ]
}
```

**Parameter isi respons**
+ `StatusResponse` – String. Informasi status, dikirim dengan kode respons 202. 
+ `ErrorResponse`— Informasi kesalahan tambahan, dikirim dengan kode respons kesalahan. ErrorResponse berisi jenis kesalahan dan pesan kesalahan.

**Kode respons**
+ 202 – Diterima
+ 403 – Dilarang
+ 500 – Kesalahan penampung. Keadaan yang tidak dapat dipulihkan. Runtime harus segera keluar.

**Example permintaan kesalahan inisialisasi**  

```
ERROR="{\"errorMessage\" : \"Failed to load function.\", \"errorType\" : \"InvalidFunctionException\"}"
curl "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/init/error" -d "$ERROR" --header "Lambda-Runtime-Function-Error-Type: Unhandled"
```

## Kesalahan invokasi
<a name="runtimes-api-invokeerror"></a>

Jika fungsi mengembalikan kesalahan atau runtime mengalami kesalahan, runtime menggunakan metode ini untuk melaporkan kesalahan ke Lambda.

**Jalur** – `/runtime/invocation/AwsRequestId/error`

**Metode** – **POST**

**Header**

`Lambda-Runtime-Function-Error-Type`— Jenis kesalahan yang ditemui runtime. Wajib: tidak. 

Header ini terdiri dari nilai string. Lambda menerima string apa pun, tetapi kami merekomendasikan format <category.reason>. Contoh:
+ Runtime. NoSuchHandler
+ Runtime. APIKeyNotFound
+ Runtime. ConfigInvalid
+ Runtime. UnknownReason

**Parameter tubuh**

`ErrorRequest` – Informasi tentang kesalahan. Wajib: tidak. 

Bidang ini adalah objek JSON dengan struktur berikut:

```
{
      errorMessage: string (text description of the error),
      errorType: string,
      stackTrace: array of strings
}
```

Perhatikan bahwa Lambda menerima nilai apa pun untuk `errorType`.

Contoh berikut menunjukkan pesan kesalahan fungsi Lambda ketika fungsi tidak dapat mengurai data peristiwa yang disediakan dalam invokasi.

**Example Kesalahan fungsi**  

```
{
      "errorMessage" : "Error parsing event data.",
      "errorType" : "InvalidEventDataException",
      "stackTrace": [ ]
}
```

**Parameter isi respons**
+ `StatusResponse` – String. Informasi status, dikirim dengan kode respons 202. 
+ `ErrorResponse`— Informasi kesalahan tambahan, dikirim dengan kode respons kesalahan. ErrorResponse berisi jenis kesalahan dan pesan kesalahan.

**Kode respons**
+ 202 – Diterima
+ 400 – Permintaan Buruk
+ 403 – Dilarang
+ 500 – Kesalahan penampung. Keadaan yang tidak dapat dipulihkan. Runtime harus segera keluar.

**Example permintaan kesalahan**  

```
REQUEST_ID=156cb537-e2d4-11e8-9b34-d36013741fb9
ERROR="{\"errorMessage\" : \"Error parsing event data.\", \"errorType\" : \"InvalidEventDataException\"}"
curl "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/$REQUEST_ID/error" -d "$ERROR" --header "Lambda-Runtime-Function-Error-Type: Unhandled"
```

# Kapan menggunakan runtime khusus OS Lambda
<a name="runtimes-provided"></a>

Lambda menyediakan [runtime terkelola](lambda-runtimes.md) untuk Java, Python, Node.js, .NET, dan Ruby. Untuk membuat fungsi Lambda dalam bahasa pemrograman yang tidak tersedia sebagai runtime terkelola, gunakan runtime khusus OS (keluarga runtime). `provided` Ada tiga kasus penggunaan utama untuk runtime khusus OS:
+ **Kompilasi asli ahead-of-time (AOT)**: Bahasa seperti Go, Rust, Swift, dan C\$1\$1 dikompilasi secara native ke biner yang dapat dieksekusi, yang tidak memerlukan runtime bahasa khusus. Bahasa-bahasa ini hanya membutuhkan lingkungan OS di mana biner yang dikompilasi dapat berjalan. Anda juga dapat menggunakan runtime khusus OS Lambda untuk menyebarkan binari yang dikompilasi dengan.NET Native AOT dan Java GraalVM Native Image.

  Anda harus menyertakan klien antarmuka runtime dalam biner Anda. Klien antarmuka runtime memanggil [Menggunakan API runtime Lambda untuk runtime kustom](runtimes-api.md) untuk mengambil pemanggilan fungsi dan kemudian memanggil penangan fungsi Anda. [Lambda menyediakan klien antarmuka runtime untuk [Rust](lambda-rust.md), [Go](golang-package.md#golang-package-mac-linux), [.NET Native AOT](dotnet-native-aot.md), [Swift](https://github.com/awslabs/swift-aws-lambda-runtime) (eksperimental), dan C \$1\$1 (eksperimental).](https://github.com/awslabs/aws-lambda-cpp)

  Anda harus mengkompilasi biner Anda untuk lingkungan Linux dan untuk arsitektur set instruksi yang sama yang Anda rencanakan untuk digunakan untuk fungsi (x86\$164 atau arm64).
+ **Runtime pihak ketiga**: Anda dapat menjalankan fungsi Lambda off-the-shelf menggunakan runtime [seperti](https://bref.sh/docs/news/01-bref-1.0.html#amazon-linux-2) Bref untuk PHP.
+ **Runtime kustom**: Anda dapat membuat runtime sendiri untuk versi bahasa atau bahasa yang Lambda tidak menyediakan runtime terkelola, seperti Node.js 19. Untuk informasi selengkapnya, lihat [Membangun runtime khusus untuk AWS Lambda](runtimes-custom.md). Ini adalah kasus penggunaan yang paling tidak umum untuk runtime khusus OS.

Lambda mendukung runtime khusus OS berikut:


| Nama | Pengidentifikasi | Sistem operasi | Tanggal pengusangan | Buat fungsi blok | Pembaruan fungsi blok | 
| --- | --- | --- | --- | --- | --- | 
|  Runtime Khusus OS  |  `provided.al2023`  |  Amazon Linux 2023  |   30 Jun 2029   |   Jul 31, 2029   |   Agustus 31, 2029   | 
|  Runtime Khusus OS  |  `provided.al2`  |  Amazon Linux 2  |   Juli 31, 2026   |   Agustus 31, 2026   |   Sep 30, 2026   | 

Runtime Amazon Linux 2023 (`provided.al2023`) memberikan beberapa keunggulan dibandingkan Amazon Linux 2, termasuk jejak penyebaran yang lebih kecil dan versi pustaka yang diperbarui seperti. `glibc`

`provided.al2023`Runtime digunakan `dnf` sebagai manajer paket, bukan`yum`, yang merupakan manajer paket default di Amazon Linux 2. Untuk informasi selengkapnya tentang perbedaan antara `provided.al2023` dan`provided.al2`, lihat [Memperkenalkan runtime Amazon Linux 2023 untuk AWS Lambda di Blog](https://aws.amazon.com/blogs/compute/introducing-the-amazon-linux-2023-runtime-for-aws-lambda/) AWS Komputasi.

# Membangun runtime khusus untuk AWS Lambda
<a name="runtimes-custom"></a>

Anda dapat menerapkan AWS Lambda runtime dalam bahasa pemrograman apa pun. Runtime adalah program yang menjalankan metode handler fungsi Lambda saat fungsi tersebut dipanggil. [Anda dapat menyertakan runtime dalam paket penerapan fungsi Anda atau mendistribusikannya dalam lapisan.](chapter-layers.md) Saat Anda membuat fungsi Lambda, pilih runtime khusus [OS (keluarga runtime](runtimes-provided.md)). `provided`

**catatan**  
Membuat runtime khusus adalah kasus penggunaan lanjutan. Jika Anda mencari informasi tentang kompilasi ke biner asli atau menggunakan off-the-shelf runtime pihak ketiga, lihat. [Kapan menggunakan runtime khusus OS Lambda](runtimes-provided.md)

Untuk panduan proses penerapan runtime kustom, lihat. [Tutorial: Membangun runtime khusus](runtimes-walkthrough.md)

**Topics**
+ [

## Persyaratan
](#runtimes-custom-build)
+ [

## Menerapkan streaming respons dalam runtime khusus
](#runtimes-custom-response-streaming)
+ [

## Membangun runtime kustom untuk Instans Terkelola Lambda
](#runtimes-custom-managed-instances)

## Persyaratan
<a name="runtimes-custom-build"></a>

Runtime khusus harus menyelesaikan tugas inisialisasi dan pemrosesan tertentu. Runtime menjalankan kode penyiapan fungsi, membaca nama handler dari variabel lingkungan, dan membaca peristiwa pemanggilan dari API runtime Lambda. Runtime meneruskan data event ke handler fungsi, dan memposting respons dari handler kembali ke Lambda.

### Tugas inisialisasi
<a name="runtimes-custom-initialization"></a>

Tugas inisialisasi dijalankan sekali [per instans fungsi](lambda-runtime-environment.md) untuk menyiapkan lingkungan untuk menangani invokasi.
+ **Ambil pengaturan** – Baca variabel lingkungan untuk mendapatkan detail tentang fungsi dan lingkungan.
  + `_HANDLER` – Lokasi ke handler, dari konfigurasi fungsi. Format standar adalah `file.method`, dengan `file` adalah nama file tanpa ekstensi, dan `method` merupakan nama metode atau fungsi yang ditentukan dalam file.
  + `LAMBDA_TASK_ROOT` – Direktori yang berisi kode fungsi.
  + `AWS_LAMBDA_RUNTIME_API` – Host dan port API runtime.

  Untuk daftar lengkap variabel yang tersedia, lihat[Variabel lingkungan runtime yang ditetapkan](configuration-envvars.md#configuration-envvars-runtime).
+ **Inisialisasi fungsi** – Muat file handler dan jalankan kode global atau statis yang ada di dalamnya. Fungsi harus membuat sumber daya statis seperti klien SDK dan koneksi database satu kali, dan menggunakannya kembali untuk beberapa invokasi.
+ **Mengatasi kesalahan** – Jika terjadi kesalahan, hubungi [kesalahan inisialisasi](runtimes-api.md#runtimes-api-initerror) API dan segera keluar.

Inisialisasi diperhitungkan dalam waktu dan batas waktu eksekusi yang ditagih. Saat eksekusi memicu inisialisasi instans baru dari fungsi, Anda dapat melihat waktu inisialisasi dalam log dan [jejak AWS X-Ray](services-xray.md).

**Example log**  

```
REPORT RequestId: f8ac1208... Init Duration: 48.26 ms   Duration: 237.17 ms   Billed Duration: 300 ms   Memory Size: 128 MB   Max Memory Used: 26 MB
```

### Memproses tugas
<a name="runtimes-custom-processing"></a>

Saat belajar, runtime menggunakan [antarmuka runtime Lambda](runtimes-api.md) untuk mengelola event masuk dan melaporkan kesalahan. Setelah menyelesaikan tugas inisialisasi, runtime memproses event masuk secara berulang. Dalam kode runtime Anda, lakukan langkah berikut secara berurutan.
+ **Dapatkan event** – Hubungi [API invokasi beikutnya](runtimes-api.md#runtimes-api-next) untuk mendapatkan event berikutnya. Badan respons berisi data event. Header respons berisi ID permintaan dan informasi lainnya.
+ **Sebakan header pelacakan** – Dapatkan header pelacakan X-Ray dari header `Lambda-Runtime-Trace-Id` di respons API. Tetapkan variabel lingkungan `_X_AMZN_TRACE_ID` secara lokal dengan nilai yang sama. X-Ray SDK menggunakan nilai ini untuk menghubungkan data pelacakan di antara layanan.
+ **Buat objek konteks** – Buat objek dengan informasi konteks dari variabel lingkungan dan header dalam respons API.
+ **Memanggil handler fungsi** – Berikan event dan objek konteks ke handler.
+ **Menangani respons** – Hubungi [respons pemanggil](runtimes-api.md#runtimes-api-response) API untuk memposting respons dari penanggung jawab.
+ **Mengatasi kesalahan** – Jika terjadi kesalahan, hubungi [kesalahan invokasi](runtimes-api.md#runtimes-api-invokeerror) API.
+ **Pembersihan** – Lepaskan sumber daya yang tidak digunakan, kirim data ke layanan lain, atau lakukan tugas tambahan sebelum melanjutkan ke event berikutnya.

### Entrypoint
<a name="runtimes-custom-bootstrap"></a>

Titik entri runtime kustom adalah file eksekusi bernama `bootstrap`. File bootstrap dapat menjadi runtime, atau dapat memanggil file lain yang membuat runtime. Jika root paket penyebaran Anda tidak berisi file bernama`bootstrap`, Lambda mencari file di lapisan fungsi. Jika `bootstrap` file tidak ada atau tidak dapat dieksekusi, fungsi Anda mengembalikan `Runtime.InvalidEntrypoint` kesalahan saat pemanggilan.

Berikut adalah contoh `bootstrap` file yang menggunakan versi bundel Node.js untuk menjalankan JavaScript runtime dalam file terpisah bernama. `runtime.js`

**Example bootstrap**  

```
#!/bin/sh
    cd $LAMBDA_TASK_ROOT
    ./node-v11.1.0-linux-x64/bin/node runtime.js
```

## Menerapkan streaming respons dalam runtime khusus
<a name="runtimes-custom-response-streaming"></a>

Untuk [fungsi streaming respons](configuration-response-streaming.md), titik akhir `response` dan `error` titik akhir memiliki perilaku yang sedikit dimodifikasi yang memungkinkan runtime mengalirkan sebagian respons ke klien dan mengembalikan muatan dalam potongan. Untuk informasi selengkapnya tentang perilaku tertentu, lihat berikut ini:
+ `/runtime/invocation/AwsRequestId/response`— Menyebarkan `Content-Type` header dari runtime untuk dikirim ke klien. Lambda mengembalikan payload respons dalam potongan melalui HTTP/1.1 chunked transfer encoding. Untuk melakukan streaming respons ke Lambda, runtime harus:
  + Atur header `Lambda-Runtime-Function-Response-Mode` HTTP ke`streaming`.
  + Atur header `Transfer-Encoding` ke `chunked`.
  + Tulis respons yang sesuai dengan spesifikasi pengkodean transfer chunked HTTP/1.1.
  + Tutup koneksi yang mendasarinya setelah berhasil menulis respons.
+ `/runtime/invocation/AwsRequestId/error`— Runtime dapat menggunakan titik akhir ini untuk melaporkan kesalahan fungsi atau runtime ke Lambda, yang juga menerima header. `Transfer-Encoding` Titik akhir ini hanya dapat dipanggil sebelum runtime mulai mengirimkan respons pemanggilan.
+ Laporkan kesalahan midstream menggunakan trailer kesalahan di `/runtime/invocation/AwsRequestId/response` — Untuk melaporkan kesalahan yang terjadi setelah runtime mulai menulis respons pemanggilan, runtime dapat secara opsional melampirkan header trailing HTTP bernama dan. `Lambda-Runtime-Function-Error-Type` `Lambda-Runtime-Function-Error-Body` Lambda memperlakukan ini sebagai respons yang berhasil dan meneruskan metadata kesalahan yang disediakan runtime kepada klien. 
**catatan**  
Untuk melampirkan header tambahan, runtime harus menetapkan nilai `Trailer` header di awal permintaan HTTP. Ini adalah persyaratan spesifikasi pengkodean transfer chunked HTTP/1.1.
  + `Lambda-Runtime-Function-Error-Type`— Jenis kesalahan yang ditemui runtime. Header ini terdiri dari nilai string. Lambda menerima string apa pun, tetapi kami merekomendasikan format. *<category.reason>* Misalnya, `Runtime.APIKeyNotFound`.
  + `Lambda-Runtime-Function-Error-Body`— Informasi yang dikodekan Base64 tentang kesalahan.

## Membangun runtime kustom untuk Instans Terkelola Lambda
<a name="runtimes-custom-managed-instances"></a>

Instans Terkelola Lambda menggunakan API runtime yang sama dengan fungsi Lambda (default). Namun, ada perbedaan utama dalam cara runtime kustom harus diimplementasikan untuk mendukung model eksekusi bersamaan dari Instans Terkelola.

### Penanganan permintaan bersamaan
<a name="runtimes-custom-managed-instances-concurrency"></a>

Perbedaan utama saat membuat runtime kustom untuk Instans Terkelola adalah dukungan untuk pemanggilan bersamaan. Tidak seperti fungsi Lambda (default) di mana runtime memproses satu pemanggilan pada satu waktu, Instans Terkelola dapat memproses beberapa pemanggilan secara bersamaan dalam satu lingkungan eksekusi.

Runtime kustom Anda harus:
+ **Mendukung `/next` permintaan bersamaan** - Runtime dapat membuat beberapa panggilan simultan ke API [pemanggilan berikutnya](runtimes-api.md#runtimes-api-next), hingga batas yang ditentukan oleh variabel lingkungan. `AWS_LAMBDA_MAX_CONCURRENCY`
+ **Menangani `/response` permintaan bersamaan** - Beberapa pemanggilan dapat memanggil API respons [pemanggilan](runtimes-api.md#runtimes-api-response) secara bersamaan.
+ **Menerapkan penanganan permintaan aman utas** - Pastikan pemanggilan bersamaan tidak saling mengganggu dengan mengelola sumber daya dan status bersama dengan benar.
+ **Gunakan permintaan unik IDs** — Lacak setiap pemanggilan secara terpisah menggunakan `Lambda-Runtime-Aws-Request-Id` header untuk mencocokkan respons dengan permintaan yang sesuai.

### Pola implementasi
<a name="runtimes-custom-managed-instances-implementation"></a>

Pola implementasi khas untuk runtime Instans Terkelola melibatkan pembuatan thread atau proses pekerja untuk menangani pemanggilan bersamaan:

1. **Baca batas konkurensi** — Pada inisialisasi, baca variabel `AWS_LAMBDA_MAX_CONCURRENCY` lingkungan untuk menentukan berapa banyak pemanggilan bersamaan yang akan didukung.

1. **Buat kumpulan pekerja** — Inisialisasi kumpulan pekerja (utas, proses, atau tugas asinkron) sama dengan batas konkurensi.

1. **Loop pemrosesan pekerja** - Setiap pekerja secara independen:
   + Panggilan `/runtime/invocation/next` untuk mendapatkan acara pemanggilan
   + Memanggil fungsi handler dengan data peristiwa
   + Memposting tanggapan terhadap `/runtime/invocation/AwsRequestId/response`
   + Mengulangi loop

### Pertimbangan tambahan
<a name="runtimes-custom-managed-instances-considerations"></a>
+ **Format logging** - Instans Terkelola hanya mendukung format log JSON. Pastikan runtime Anda menghormati variabel `AWS_LAMBDA_LOG_FORMAT` lingkungan dan hanya menggunakan format JSON. Untuk informasi selengkapnya, lihat [Mengkonfigurasi JSON dan format log teks biasa](monitoring-cloudwatchlogs-logformat.md).
+ **Sumber daya bersama** — Berhati-hatilah saat menggunakan sumber daya bersama seperti `/tmp` direktori dengan pemanggilan bersamaan. Menerapkan mekanisme penguncian yang tepat untuk mencegah kondisi balapan.

Untuk informasi selengkapnya tentang lingkungan eksekusi Instans Terkelola Lambda, lihat. [Memahami lingkungan eksekusi Instans Terkelola Lambda](lambda-managed-instances-execution-environment.md)

# Tutorial: Membangun runtime khusus
<a name="runtimes-walkthrough"></a>

Dalam tutorial ini, Anda membuat fungsi Lambda dengan waktu pengoperasian kustom. Anda memulai dengan memasukkan waktu pengoperasian dalam paket deployment fungsi. Kemudian Anda memigrasikannya ke lapisan yang Anda kelola secara terpisah dari fungsi. Terakhir, Anda membagikan lapisan waktu pengoperasian kepada dunia dengan memperbarui kebijakan izin berbasis sumber daya.

## Prasyarat
<a name="runtimes-walkthrough-prereqs"></a>

Tutorial ini mengasumsikan bahwa Anda memiliki pengetahuan tentang operasi Lambda dan konsol Lambda dasar. Jika belum, ikuti petunjuk di [Membuat fungsi Lambda dengan konsol](getting-started.md#getting-started-create-function) untuk membuat fungsi Lambda pertama Anda.

Untuk menyelesaikan langkah-langkah berikut, Anda memerlukan [AWS CLI versi 2](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html). Perintah dan output yang diharapkan dicantumkan dalam blok terpisah:

```
aws --version
```

Anda akan melihat output berikut:

```
aws-cli/2.13.27 Python/3.11.6 Linux/4.14.328-248.540.amzn2.x86_64 exe/x86_64.amzn.2
```

Untuk perintah panjang, karakter escape (`\`) digunakan untuk memisahkan perintah menjadi beberapa baris.

Di Linux dan macOS, gunakan shell dan manajer paket pilihan Anda.

**catatan**  
Di Windows, beberapa perintah Bash CLI yang biasa Anda gunakan dengan Lambda (`zip`seperti) tidak didukung oleh terminal bawaan sistem operasi. Untuk mendapatkan versi terintegrasi Windows dari Ubuntu dan Bash, [instal Windows Subsystem untuk](https://docs.microsoft.com/en-us/windows/wsl/install-win10) Linux. Contoh perintah CLI dalam panduan ini menggunakan pemformatan Linux. Perintah yang menyertakan dokumen JSON sebaris harus diformat ulang jika Anda menggunakan CLI Windows. 

Anda memerlukan IAM role untuk membuat fungsi Lambda. Peran memerlukan izin untuk mengirim CloudWatch log ke Log dan mengakses Layanan AWS yang digunakan fungsi Anda. Jika Anda tidak memiliki peran untuk pengembangan fungsi, buatlah sekarang juga.

**Untuk membuat peran eksekusi**

1. Buka [halaman peran](https://console.aws.amazon.com/iam/home#/roles) di konsol IAM.

1. Pilih **Buat peran**.

1. Buat peran dengan properti berikut.
   + **Entitas tepercaya** – **Lambda**.
   + **Izin** – **AWSLambdaBasicExecutionRole**.
   + **Nama peran** – **lambda-role**.

   **AWSLambdaBasicExecutionRole**Kebijakan ini memiliki izin yang diperlukan fungsi untuk menulis log ke CloudWatch Log.

## Buat fungsi
<a name="runtimes-walkthrough-function"></a>

Buat fungsi Lambda dengan waktu pengoperasian kustom. Contoh ini mencakup dua file: file runtime `bootstrap` dan function handler. Keduanya diterapkan di Bash.

1. Buat direktori untuk proyek, dan kemudian beralih ke direktori itu.

   ```
   mkdir runtime-tutorial
   cd runtime-tutorial
   ```

1. Buat file baru bernama`bootstrap`. Ini adalah runtime khusus.  
**Example bootstrap**  

   ```
   #!/bin/sh
   
   set -euo pipefail
   
   # Initialization - load function handler
   source $LAMBDA_TASK_ROOT/"$(echo $_HANDLER | cut -d. -f1).sh"
   
   # Processing
   while true
   do
     HEADERS="$(mktemp)"
     # Get an event. The HTTP request will block until one is received
     EVENT_DATA=$(curl -sS -LD "$HEADERS" "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/next")
   
     # Extract request ID by scraping response headers received above
     REQUEST_ID=$(grep -Fi Lambda-Runtime-Aws-Request-Id "$HEADERS" | tr -d '[:space:]' | cut -d: -f2)
   
     # Run the handler function from the script
     RESPONSE=$($(echo "$_HANDLER" | cut -d. -f2) "$EVENT_DATA")
   
     # Send the response
     curl "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/$REQUEST_ID/response"  -d "$RESPONSE"
   done
   ```

   Waktu pengoperasian memuat skrip fungsi dari paket deployment. Runtime menggunakan dua variabel untuk menemukan skrip.`LAMBDA_TASK_ROOT` memberi tahu tempat paket diekstrak, dan `_HANDLER` mencakup nama skrip.

   Setelah runtime memuat skrip fungsi, ia menggunakan API runtime untuk mengambil peristiwa pemanggilan dari Lambda, meneruskan acara ke handler, dan memposting respons kembali ke Lambda. Untuk mendapatkan ID permintaan, waktu pengoperasian menyimpan header dari respons API ke file sementara, dan membaca header `Lambda-Runtime-Aws-Request-Id` dari file.
**catatan**  
Waktu pengoperasian memiliki tanggung jawab tambahan, termasuk penanganan kesalahan, dan memberikan informasi konteks kepada penangan. Untuk detailnya, lihat [Persyaratan](runtimes-custom.md#runtimes-custom-build).

1. Buat skrip untuk fungsi tersebut. Contoh skrip berikut mendefinisikan fungsi handler yang mengambil data peristiwa, log ke`stderr`, dan mengembalikannya.  
**Example function.sh**  

   ```
   function handler () {
     EVENT_DATA=$1
     echo "$EVENT_DATA" 1>&2;
     RESPONSE="Echoing request: '$EVENT_DATA'"
   
     echo $RESPONSE
   }
   ```

   `runtime-tutorial`Direktori sekarang akan terlihat seperti ini:

   ```
   runtime-tutorial
   ├ bootstrap
   └ function.sh
   ```

1. Buat file dapat dijalankan dan tambahkan ke arsip file .zip. Ini adalah paket penyebaran.

   ```
   chmod 755 function.sh bootstrap
   zip function.zip function.sh bootstrap
   ```

1. Buat fungsi bernama `bash-runtime`. [Untuk`--role`, masukkan ARN peran eksekusi Lambda Anda.](lambda-intro-execution-role.md)

   ```
   aws lambda create-function --function-name bash-runtime \
   --zip-file fileb://function.zip --handler function.handler --runtime provided.al2023 \
   --role arn:aws:iam::123456789012:role/lambda-role
   ```

1. Memanggil fungsi.

   ```
   aws lambda invoke --function-name bash-runtime --payload '{"text":"Hello"}' response.txt --cli-binary-format raw-in-base64-out
   ```

   **cli-binary-format**Opsi ini diperlukan jika Anda menggunakan AWS CLI versi 2. Untuk menjadikan ini pengaturan default, jalankan`aws configure set cli-binary-format raw-in-base64-out`. Untuk informasi selengkapnya, lihat [opsi baris perintah global yang AWS CLI didukung](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-options.html#cli-configure-options-list) di *Panduan AWS Command Line Interface Pengguna untuk Versi 2*.

   Anda akan melihat tanggapan seperti ini:

   ```
   {
       "StatusCode": 200,
       "ExecutedVersion": "$LATEST"
   }
   ```

1. Verifikasi responsnya.

   ```
   cat response.txt
   ```

   Anda akan melihat tanggapan seperti ini:

   ```
   Echoing request: '{"text":"Hello"}'
   ```

## Buat lapisan
<a name="runtimes-walkthrough-layer"></a>

Untuk memisahkan kode waktu pengoperasian dari kode fungsi, buat lapisan yang hanya berisi waktu pengoperasian. Lapisan memungkinkan Anda mengembangkan dependensi fungsi secara independen, dan dapat mengurangi penggunaan penyimpanan ketika Anda menggunakan lapisan yang sama dengan beberapa fungsi. Untuk informasi selengkapnya, lihat [Mengelola dependensi Lambda dengan lapisan](chapter-layers.md).

1. Buat file.zip yang berisi `bootstrap` file.

   ```
   zip runtime.zip bootstrap
   ```

1. Buat lapisan dengan perintah [publish-layer-version](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/publish-layer-version.html?highlight=nodejs16%20x).

   ```
   aws lambda publish-layer-version --layer-name bash-runtime --zip-file fileb://runtime.zip
   ```

   Ini menciptakan versi pertama lapisan.

## Perbarui fungsi
<a name="runtimes-walkthrough-update"></a>

Untuk menggunakan layer runtime dalam fungsi, konfigurasikan fungsi untuk menggunakan layer, dan hapus kode runtime dari fungsi.

1. Perbarui konfigurasi fungsi untuk menarik lapisan.

   ```
   aws lambda update-function-configuration --function-name bash-runtime \
   --layers arn:aws:lambda:us-east-1:123456789012:layer:bash-runtime:1
   ```

   Ini menambahkan waktu pengoperasian ke fungsi di direktori `/opt`. Untuk memastikan bahwa Lambda menggunakan runtime di layer, Anda harus menghapus `boostrap` dari paket penerapan fungsi, seperti yang ditunjukkan dalam dua langkah berikutnya.

1. Buat file.zip yang berisi kode fungsi.

   ```
   zip function-only.zip function.sh
   ```

1. Perbarui kode fungsi untuk hanya memasukkan skrip penangan.

   ```
   aws lambda update-function-code --function-name bash-runtime --zip-file fileb://function-only.zip
   ```

1. Panggil fungsi untuk mengonfirmasi bahwa ia berfungsi dengan layer runtime.

   ```
   aws lambda invoke --function-name bash-runtime --payload '{"text":"Hello"}' response.txt --cli-binary-format raw-in-base64-out
   ```

   **cli-binary-format**Opsi ini diperlukan jika Anda menggunakan AWS CLI versi 2. Untuk menjadikan ini pengaturan default, jalankan`aws configure set cli-binary-format raw-in-base64-out`. Untuk informasi selengkapnya, lihat [opsi baris perintah global yang AWS CLI didukung](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-options.html#cli-configure-options-list) di *Panduan AWS Command Line Interface Pengguna untuk Versi 2*.

   Anda akan melihat tanggapan seperti ini:

   ```
   {
       "StatusCode": 200,
       "ExecutedVersion": "$LATEST"
   }
   ```

1. Verifikasi responsnya.

   ```
   cat response.txt
   ```

   Anda akan melihat tanggapan seperti ini:

   ```
   Echoing request: '{"text":"Hello"}'
   ```

## Perbarui waktu pengoperasian
<a name="runtimes-walkthrough-runtime"></a>

1. Untuk mencatat log informasi tentang lingkungan eksekusi, perbarui skrip waktu pengoperasian ke variabel lingkungan output.  
**Example bootstrap**  

   ```
   #!/bin/sh
   
   set -euo pipefail
   
   # Configure runtime to output environment variables
   echo "##  Environment variables:"
   env
   
   # Load function handler
   source $LAMBDA_TASK_ROOT/"$(echo $_HANDLER | cut -d. -f1).sh"
   
   # Processing
   while true
   do
     HEADERS="$(mktemp)"
     # Get an event. The HTTP request will block until one is received
     EVENT_DATA=$(curl -sS -LD "$HEADERS" "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/next")
   
     # Extract request ID by scraping response headers received above
     REQUEST_ID=$(grep -Fi Lambda-Runtime-Aws-Request-Id "$HEADERS" | tr -d '[:space:]' | cut -d: -f2)
   
     # Run the handler function from the script
     RESPONSE=$($(echo "$_HANDLER" | cut -d. -f2) "$EVENT_DATA")
   
     # Send the response
     curl "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/$REQUEST_ID/response"  -d "$RESPONSE"
   done
   ```

1. Buat file.zip yang berisi versi baru `bootstrap` file.

   ```
   zip runtime.zip bootstrap
   ```

1. Buat versi baru dari `bash-runtime` layer.

   ```
   aws lambda publish-layer-version --layer-name bash-runtime --zip-file fileb://runtime.zip
   ```

1. Konfigurasikan fungsi untuk menggunakan versi baru lapisan.

   ```
   aws lambda update-function-configuration --function-name bash-runtime \
   --layers arn:aws:lambda:us-east-1:123456789012:layer:bash-runtime:2
   ```

## Bagikan lapisan
<a name="runtimes-walkthrough-share"></a>

[Untuk berbagi layer dengan yang lain Akun AWS, tambahkan pernyataan izin lintas akun ke kebijakan berbasis sumber daya lapisan.](access-control-resource-based.md) Jalankan [add-layer-version-permission](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/add-layer-version-permission.html)perintah dan tentukan ID akun sebagai`principal`. Dalam setiap pernyataan, Anda dapat memberikan izin ke satu akun, semua akun, atau organisasi di [AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html).

Contoh berikut memberikan akun 111122223333 akses ke versi 2 lapisan. `bash-runtime`

```
aws lambda add-layer-version-permission \
  --layer-name bash-runtime \
  --version-number 2 \  
  --statement-id xaccount \
  --action lambda:GetLayerVersion \
  --principal 111122223333 \
  --output text
```

Anda akan melihat output yang serupa dengan yang berikut:

```
{"Sid":"xaccount","Effect":"Allow","Principal":{"AWS":"arn:aws:iam::111122223333:root"},"Action":"lambda:GetLayerVersion","Resource":"arn:aws:lambda:us-east-1:123456789012:layer:bash-runtime:2"}
```

Izin hanya berlaku untuk satu versi lapisan. Ulangi proses ini tiap kali Anda membuat versi lapisan baru.

## Bersihkan
<a name="runtimes-walkthrough-cleanup"></a>

Hapus setiap versi lapisan.

```
aws lambda delete-layer-version --layer-name bash-runtime --version-number 1
aws lambda delete-layer-version --layer-name bash-runtime --version-number 2
```

Karena fungsi memiliki referensi ke lapisan versi 2, ia masih ada di Lambda. Fungsi terus bekerja, tetapi fungsi tidak dapat lagi dikonfigurasi untuk menggunakan versi yang dihapus. Jika Anda memodifikasi daftar lapisan pada fungsi, Anda harus menentukan versi baru atau menghilangkan lapisan yang dihapus.

Hapus fungsi dengan perintah [hapus-fungsi](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/delete-function.html).

```
aws lambda delete-function --function-name bash-runtime
```

# Repositori sumber terbuka
<a name="runtimes-open-source"></a>

AWS Lambda menyediakan berbagai alat open source, pustaka, dan komponen untuk membantu Anda membangun, menyesuaikan, dan mengoptimalkan aplikasi tanpa server Anda. Sumber daya ini termasuk klien antarmuka runtime, pustaka acara, gambar dasar kontainer, alat pengembangan, dan proyek sampel yang dikelola oleh AWS dan tersedia di. GitHub Dengan memanfaatkan repositori open source ini, Anda dapat memperluas kemampuan Lambda, membuat runtime khusus, memproses peristiwa dari berbagai AWS layanan, dan mendapatkan wawasan yang lebih dalam tentang kinerja fungsi Anda. Halaman ini memberikan ikhtisar proyek open source utama yang mendukung pengembangan Lambda.

## Klien Antarmuka Runtime
<a name="open-source-ric"></a>

Lambda Runtime Interface Clients (RICs) adalah pustaka open source yang mengimplementasikan [Runtime API](runtimes-api.md) dan mengelola interaksi antara kode fungsi Anda dan layanan Lambda. Klien ini menangani menerima acara pemanggilan, meneruskan informasi konteks, dan melaporkan kesalahan.

Klien antarmuka runtime yang digunakan oleh runtime terkelola Lambda dan gambar dasar kontainer diterbitkan sebagai open source. Saat Anda membuat runtime kustom atau memperpanjang runtime yang sudah ada, Anda dapat menggunakan pustaka open source ini untuk menyederhanakan implementasi Anda. GitHub Repositori open source berikut berisi kode sumber untuk Lambda: RICs
+ [Klien Antarmuka Runtime Node.js](https://github.com/aws/aws-lambda-nodejs-runtime-interface-client)
+ [Klien Antarmuka Runtime Python](https://github.com/aws/aws-lambda-python-runtime-interface-client)
+ [Klien Antarmuka Java Runtime](https://github.com/aws/aws-lambda-java-libs/tree/main/aws-lambda-java-runtime-interface-client)
+ [Klien Antarmuka Ruby Runtime](https://github.com/aws/aws-lambda-ruby-runtime-interface-client)
+ [Klien Antarmuka Runtime .NET](https://github.com/aws/aws-lambda-dotnet)
+ [Klien Antarmuka Rust Runtime](https://github.com/aws/aws-lambda-rust-runtime)
+ [Klien Antarmuka Go Runtime](https://github.com/aws/aws-lambda-go)
+ [Klien Antarmuka Runtime Swift (eksperimental](https://github.com/awslabs/swift-aws-lambda-runtime))
+ [Klien Antarmuka Runtime C \$1\$1 (eksperimental](https://github.com/awslabs/aws-lambda-cpp))
+ [Gambar Lambda Base](https://github.com/aws/aws-lambda-base-images)

Untuk informasi selengkapnya tentang menggunakan klien ini untuk membangun runtime kustom, lihat[Membangun runtime khusus untuk AWS Lambda](runtimes-custom.md).

## Perpustakaan acara
<a name="open-source-event-libraries"></a>

Pustaka acara Lambda menyediakan definisi tipe dan utilitas pembantu untuk memproses acara dari berbagai layanan. AWS Pustaka ini membantu Anda mengurai dan menangani data peristiwa dengan cara yang aman untuk jenis, membuatnya lebih mudah untuk bekerja dengan peristiwa dari layanan seperti Amazon S3, Amazon DynamoDB, dan Amazon API Gateway.

Untuk bahasa yang dikompilasi, AWS sediakan pustaka acara berikut:
+ [Perpustakaan Acara Java](https://github.com/aws/aws-lambda-java-libs/tree/main/aws-lambda-java-events)
+ [.NET Perpustakaan Acara](https://github.com/aws/aws-lambda-dotnet/tree/master/Libraries/src)
+ [Perpustakaan Acara Go](https://github.com/aws/aws-lambda-go/tree/main/events)
+ [Perpustakaan Acara Rust](https://github.com/awslabs/aws-lambda-rust-runtime)

Untuk bahasa yang ditafsirkan seperti Node.js, Python, dan Ruby, peristiwa dapat diuraikan secara langsung sebagai objek JSON tanpa memerlukan perpustakaan terpisah. Namun, pengembang yang menggunakan Node.js dan Python dapat memanfaatkan powertools AWS Lambda, yang menyediakan skema bawaan untuk AWS acara yang menawarkan petunjuk tipe, validasi data, dan fungsionalitas yang mirip dengan yang disediakan perpustakaan bahasa yang dikompilasi.
+ [Powertools untuk TypeScript](https://docs.powertools.aws.dev/lambda/typescript/latest/features/parser/#built-in-schemas)
+ [Powertools untuk Python](https://docs.powertools.aws.dev/lambda/python/latest/utilities/parser/#built-in-models)

## Gambar dasar kontainer
<a name="open-source-container-base-images"></a>

AWS menyediakan gambar dasar wadah open source yang dapat Anda gunakan sebagai titik awal untuk membangun gambar kontainer untuk fungsi Lambda Anda. Gambar dasar ini mencakup klien antarmuka runtime dan komponen lain yang diperlukan untuk menjalankan fungsi Anda di lingkungan eksekusi Lambda.

Untuk informasi selengkapnya tentang gambar dasar yang tersedia dan cara menggunakannya, lihat repositori [Gambar Dasar AWS Lambda](https://github.com/aws/aws-lambda-base-images) dan. [Buat fungsi Lambda menggunakan gambar kontainer](images-create.md)

## Alat pengembangan
<a name="open-source-development-tools"></a>

AWS menyediakan alat pengembangan open source tambahan untuk membantu Anda membangun dan mengoptimalkan fungsi Lambda Anda:

### Powertools untuk AWS Lambda
<a name="open-source-powertools"></a>

Powertools untuk AWS Lambda menyederhanakan pengembangan tanpa server dengan utilitas penting untuk mencegah pemrosesan duplikat, dan pemrosesan batch untuk penanganan multi-rekaman dan perpustakaan konsumen Kafka. Fitur-fitur ini membantu Anda meminimalkan kompleksitas kode dan overhead operasional.

Anda juga dapat memanfaatkan validasi skema acara bawaan, pencatatan dan penelusuran terstruktur, dan integrasi penyimpanan parameter yang dirancang untuk mempercepat pembuatan fungsi Lambda siap produksi sambil mengikuti praktik terbaik yang dirancang dengan baik. AWS 

GitHub repositori:
+ [Python](https://github.com/aws-powertools/powertools-lambda-python)
+ [TypeScript](https://github.com/aws-powertools/powertools-lambda-typescript)
+ [Java](https://github.com/aws-powertools/powertools-lambda-java)
+ [.NET](https://github.com/aws-powertools/powertools-lambda-dotnet)

### Alat pengembangan Java
<a name="open-source-java-tools"></a>
+ [Java Profiler (eksperimental)](https://github.com/aws/aws-lambda-java-libs/tree/main/experimental/aws-lambda-java-profiler) - Alat untuk membuat profil fungsi Java Lambda.
+ [Java Libraries](https://github.com/aws/aws-lambda-java-libs) - Sebuah repositori yang berisi koleksi komprehensif perpustakaan Java dan alat-alat untuk pengembangan Lambda, termasuk proyek-proyek utama seperti JUnit utilitas pengujian dan alat profiling.
+ [Serverless Java Container](https://github.com/aws/serverless-java-container) - Pustaka yang memungkinkan Anda menjalankan aplikasi Java yang ada di Lambda dengan sedikit perubahan.

### Alat pengembangan.NET
<a name="open-source-dotnet-tools"></a>

[AWS Lambda Repositori.NET](https://github.com/aws/aws-lambda-dotnet) menyediakan pustaka dan alat .NET untuk pengembangan Lambda, termasuk proyek-proyek utama seperti untuk alat AWS Lambda untuk server.NET CLI dan .NET Core untuk hosting aplikasi.NET Core.

## Contoh proyek
<a name="open-source-sample-projects"></a>

Jelajahi koleksi komprehensif proyek dan aplikasi Lambda sampel di repositori [Serverless](https://serverlessland.com/repos) Land. Sampel ini menunjukkan berbagai kasus penggunaan Lambda, pola integrasi, dan praktik terbaik untuk membantu Anda memulai aplikasi tanpa server.