Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menambah Fungsi Acara Lambda menggunakan ekstensi Lambda
Anda dapat menggunakan ekstensi Lambda untuk menambah Fungsi Acara Lambda Anda. Misalnya, gunakan ekstensi Lambda untuk mengintegrasikan Fungsi Acara dengan alat pemantauan, observabilitas, keamanan, dan tata kelola 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 pemanggilan Fungsi Acara diproses sepenuhnya. Karena ekstensi berjalan sebagai proses terpisah, Anda dapat menulisnya dalam bahasa yang berbeda dari Fungsi Acara. Semua ekstensi Runtime Fungsi Acara Lambda dukungan.
Ekstensi internal berjalan sebagai bagian dari proses runtime. Fungsi Acara 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 Peristiwa menggunakan konsol Lambda, layanan AWS Command Line Interface (AWS CLI), atau infrastruktur sebagai kode (IAc) dan alat seperti 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
Topik
Lingkungan eksekusi
Lambda memanggil Fungsi Acara Anda di lingkungan eksekusi, yang menyediakan lingkungan runtime yang aman dan terisolasi. Lingkungan eksekusi mengelola sumber daya yang diperlukan untuk menjalankan Fungsi Acara Anda dan menyediakan dukungan siklus hidup untuk runtime dan ekstensi Fungsi Acara.
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). FaseInitterjadi saat invokasi pertama, atau sebelum invokasi fungsi jika Anda telah mengaktifkan konkurensi terprovisi.Fase
Initdibagi 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 SnapStart diaktifkan,
Initfase terjadi ketika Anda menerbitkan 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.RestoreAnda 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. KetikaRestorefase selesai, Lambda memanggil fungsi handler (the). Fase invokasi -
InvokeDalam 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 peristiwaShutdownke 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 ekstensi Fungsi Acara Anda diperhitungkan terhadap batas ukuran paket penerapan. Untuk arsip file.zip, ukuran total Fungsi Acara yang tidak di-zip dan semua ekstensi tidak dapat melebihi batas ukuran paket penerapan yang tidak di-zip sebesar 250 MB.
Ekstensi dapat memengaruhi kinerja Fungsi Acara Anda karena mereka berbagi sumber daya Fungsi Acara seperti CPU, memori, dan penyimpanan. Misalnya, jika ekstensi melakukan operasi komputasi intensif, Anda mungkin melihat durasi eksekusi Event Function Anda meningkat.
Setiap ekstensi harus menyelesaikan inisialisasi sebelum Lambda memanggil Fungsi Acara. Oleh karena itu, ekstensi yang menghabiskan waktu inisialisasi yang signifikan dapat meningkatkan latensi pemanggilan Fungsi Peristiwa.
Untuk mengukur waktu tambahan yang dibutuhkan ekstensi setelah eksekusi Fungsi Acara, Anda dapat menggunakan metrik PostRuntimeExtensionsDuration fungsi. Untuk mengukur peningkatan memori yang digunakan, Anda dapat menggunakan metrik MaxMemoryUsed. Untuk memahami dampak ekstensi tertentu, Anda dapat menjalankan berbagai versi Fungsi Acara Anda secara berdampingan.
catatan
MaxMemoryUsedmetrik adalah salah satu Metrik yang dikumpulkan oleh Lambda Insights dan bukan metrik asli Lambda.
Izin
Ekstensi memiliki akses ke sumber daya yang sama dengan Fungsi Acara. Karena ekstensi dijalankan dalam lingkungan yang sama dengan Fungsi Acara, izin dibagi antara Fungsi Acara dan ekstensi.
Untuk arsip file.zip, Anda dapat membuat CloudFormation templat untuk menyederhanakan tugas melampirkan konfigurasi ekstensi yang sama—termasuk izin AWS Identity and Access Management (IAM) — ke beberapa Fungsi Acara.