Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menambah fungsi Lambda menggunakan ekstensi Lambda
Anda dapat menggunakan ekstensi Lambda untuk memperbanyak fungsi Lambda. Misalnya, gunakan ekstensi Lambda untuk mengintegrasikan fungsi Anda dengan alat bantu pemantauan, pengamatan, keamanan, dan pengaturan pilihan Anda. Anda dapat memilih dari serangkaian luas alat yang disediakan oleh AWS Lambda Mitra
Lambda mendukung ekstensi eksternal dan internal. Ekstensi eksternal berjalan sebagai proses independen di lingkungan eksekusi dan terus berjalan setelah invokasi fungsi diproses sepenuhnya. Karena ekstensi berjalan sebagai proses terpisah, Anda dapat menulisnya dalam bahasa yang berbeda dari fungsi. Semua ekstensi Runtime Lambda dukungan.
Ekstensi internal berjalan sebagai bagian dari proses runtime. Fungsi Anda mengakses ekstensi internal dengan menggunakan skrip pembungkus atau mekanisme dalam proses seperti JAVA_TOOL_OPTIONS
. Untuk informasi selengkapnya, lihat Memodifikasi lingkungan waktu pengoperasian.
Anda dapat menambahkan ekstensi ke fungsi menggunakan konsol Lambda, layanan AWS Command Line Interface (AWS CLI), atau infrastruktur sebagai kode (IAc) dan alat seperti AWS CloudFormation, AWS Serverless Application Model (AWS SAM), dan Terraform.
Anda dikenakan biaya untuk waktu eksekusi yang digunakan oleh ekstensi (dengan penambahan 1 ms). Tidak ada biaya untuk menginstal ekstensi Anda sendiri. Untuk informasi harga ekstensi selengkapnya, lihat AWS Lambda Harga
Untuk tutorial tentang ekstensi dan cara menggunakannya dengan fungsi Lambda Anda, lihat Lokakarya AWS Lambda Ekstensi
Topik
Lingkungan eksekusi
Lambda memanggil fungsi dalam lingkungan eksekusi, yang menyediakan lingkungan runtime yang aman dan terisolasi. Lingkungan eksekusi mengelola sumber daya yang diperlukan untuk menjalankan fungsi Anda dan menyediakan dukungan siklus hidup untuk runtime dan ekstensi fungsi.
Siklus hidup lingkungan eksekusi mencakup fase-fase berikut:
-
Init
: Dalam fase ini, Lambda membuat atau membatalkan pembekuan lingkungan eksekusi dengan sumber daya terkonfigurasi, mengunduh kode untuk fungsi dan semua lapisan, menginisialisasi ekstensi apa pun, menginisialisasi runtime, lalu menjalankan kode inisialisasi fungsi (yaitu kode di luar handler utama). FaseInit
terjadi saat invokasi pertama, atau sebelum invokasi fungsi jika Anda telah mengaktifkan konkurensi terprovisi.Fase
Init
dibagi ke dalam tiga subfase:Extension init
,Runtime init
, danFunction init
. Subfase ini memastikan semua ekstensi dan runtime menyelesaikan tugas penyiapam mereka sebelum kode fungsi berjalan.Ketika Lambda SnapStart diaktifkan,
Init
fase terjadi ketika Anda mempublikasikan versi fungsi. Lambda menyimpan snapshot memori dan status disk dari lingkungan eksekusi yang diinisialisasi, mempertahankan snapshot terenkripsi, dan menyimpannya dalam cache untuk akses latensi rendah. Jika Anda memiliki hook runtime sebelum-checkpoint, maka kode berjalan di akhir fase.Init
-
Restore
(SnapStart only): Saat Anda pertama kali memanggil SnapStartfungsi dan saat fungsi meningkat, Lambda melanjutkan lingkungan eksekusi baru dari snapshot yang bertahan alih-alih menginisialisasi fungsi dari awal. Jika Anda memiliki hook runtime after-restore, kode berjalan di akhir fase.Restore
Anda dikenakan biaya untuk durasi kait runtime setelah pemulihan. Runtime harus dimuat dan kait runtime setelah pemulihan harus selesai dalam batas waktu tunggu (10 detik). Jika tidak, Anda akan mendapatkan SnapStartTimeoutException. KetikaRestore
fase selesai, Lambda memanggil fungsi handler (the). Fase invokasi -
Invoke
Dalam fase ini, Lambda memicu handler fungsi. Setelah fungsi berjalan hingga selesai, Lambda bersiap untuk menangani invokasi fungsi lain. -
Shutdown
: Fase ini dipicu jika fungsi Lambda tidak menerima invokasi apa pun selama jangka waktu tertentu. Di faseShutdown
, Lambda menonaktifkan runtime, memberi tahu ekstensi agar mereka berhenti dengan bersih, lalu menghapus lingkungan. Lambda mengirim peristiwaShutdown
ke setiap ekstensi, yang memberi tahu ekstensi bahwa lingkungan akan dimatikan.
Selama fase Init
, Lambda mengekstrak lapisan yang berisi ekstensi ke direktori /opt
di lingkungan eksekusi. Lambda mencari ekstensi di direktori /opt/extensions/
, menginterpretasikan setiap file sebagai bootstrap yang dapat dijalankan untuk meluncurkan ekstensi, dan memulai semua ekstensi secara paralel.
Dampak pada performa dan sumber daya
Ukuran jumlah ekstensi fungsi Anda dipertimbangkan untuk batasan ukuran paket deployment. Untuk arsip file .zip, ukuran total fungsi tanpa zip, dan semua ekstensi tidak boleh melebihi ukuran paket deployment tanpa zip sebesar 250 MB.
Ekstensi dapat memengaruhi performa fungsi Anda karena mereka berbagi sumber daya fungsi seperti CPU, memori, dan penyimpanan. Sebagai contoh, jika ekstensi melakukan operasi yang intensif-komputasi, Anda dapat melihat durasi eksekusi fungsi Anda meningkat.
Setiap ekstensi harus melengkapi inisialisasinya sebelum Lambda mengaktifkan fungsi. Oleh karena itu, ekstensi yang menggunakan waktu inisialisasi yang signifikan dapat meningkatkan latensi invokasi fungsi.
Untuk mengukur waktu ekstra yang diperlukan ekstensi setelah eksekusi fungsi, Anda dapat menggunakan metrik fungsi PostRuntimeExtensionsDuration
. Untuk mengukur peningkatan memori yang digunakan, Anda dapat menggunakan metrik MaxMemoryUsed
. Untuk memahami dampak dari ekstensi tertentu, Anda dapat menjalankan versi yang berbeda dari fungsi Anda secara berdampingan.
Izin
Ekstensi memiliki akses ke sumber daya yang sama dengan fungsi. Karena ekstensi dieksekusi dalam lingkungan yang sama dengan fungsi, izin dibagikan antara fungsi dan ekstensi.
Untuk arsip file.zip, Anda dapat membuat AWS CloudFormation templat untuk menyederhanakan tugas melampirkan konfigurasi ekstensi yang sama—termasuk izin AWS Identity and Access Management (IAM) — ke beberapa fungsi.