Eksekusi Lambda
Saat menjalankan fungsi atas perintah Anda, Lambda mengelola penyediaan dan konfigurasi sistem dasar yang diperlukan untuk menjalankan kode Anda. Hal ini memungkinkan developer untuk fokus pada logika bisnis dan menulis kode, bukan membuat administrasi dan mengelola sistem yang mendasarinya.
Layanan Lambda dibagi menjadi bidang kendali dan bidang data. Setiap bidang mewakili tujuan yang berbeda dalam layanan. Bidang kendali memberikan API manajemen (misalnya, CreateFunction
, UpdateFunctionCode
, PublishLayerVersion
, dan sebagainya), serta mengelola integrasi dengan semua layanan AWS. Komunikasi ke bidang kendali Lambda dilindungi secara in-transit oleh TLS. Semua data pelanggan yang disimpan dalam bidang kendali Lambda dienkripsi at-rest menggunakan AWS KMS, yang didesain untuk melindungi dari gangguan atau pengungkapan yang tidak sah.
Bidang data adalah API Panggilan Lambda yang memicu pemanggilan fungsi Lambda. Saat fungsi Lambda dipanggil, bidang data mengalokasikan lingkungan eksekusipada Worker AWS Lambda (atau Worker saja, sejenis instans Amazon EC2
Lingkungan eksekusi Lambda
Setiap pemanggilan dirutekan oleh layanan panggilan Lambda ke lingkungan eksekusi pada Worker yang mampu melayani permintaan. Selain melalui bidang data, pelanggan dan pengguna lain tidak dapat langsung memulai komunikasi jaringan inbound/ingress dengan lingkungan eksekusi. Hal ini membantu memastikan bahwa komunikasi ke lingkungan eksekusi Anda diautentikasi dan sah.
Lingkungan eksekusi disimpan untuk versi fungsi tertentu dan tidak dapat digunakan kembali di versi fungsi, fungsi, atau akun AWS lainnya. Artinya, satu fungsi yang mungkin memiliki dua versi yang berbeda akan menghasilkan setidaknya dua lingkungan eksekusi yang unik.
Setiap lingkungan eksekusi hanya dapat digunakan untuk satu pemanggilan konkuren sekaligus, dan dapat digunakan kembali di beberapa pemanggilan versi fungsi yang sama untuk alasan performa. Tergantung pada beberapa faktor (misalnya, tingkat pemanggilan, konfigurasi fungsi, dan sebagainya), satu atau beberapa lingkungan eksekusi mungkin ada untuk versi fungsi tertentu. Dengan pendekatan ini, Lambda mampu memberikan isolasi tingkat versi fungsi bagi pelanggannya.
Saat ini, Lambda tidak mengisolasi panggilan dalam lingkungan eksekusi versi fungsi. Artinya, satu pemanggilan dapat meninggalkan situasi yang dapat memengaruhi pemanggilan berikutnya (misalnya, file yang ditulis ke/tmp atau data dalam memori). Jika Anda ingin memastikan bahwa satu pemanggilan tidak berpengaruh pada pemanggilan lain, Lambda merekomendasikan agar Anda membuat fungsi tambahan yang berbeda. Misalnya, Anda dapat membuat fungsi yang berbeda untuk operasi parsing yang rumit dan lebih rentan terhadap kesalahan, serta menggunakan kembali fungsi yang tidak melakukan operasi sensitif keamanan. Saat ini, Lambda tidak membatasi jumlah fungsi yang dapat pelanggan buat. Untuk informasi lebih lanjut tentang batasan, lihat halaman Kuota Lambda.
Lingkungan eksekusi terus dipantau dan dikelola oleh Lambda, dan lingkungan tersebut dapat dibuat atau dihancurkan karena sejumlah alasan termasuk, namun tidak terbatas pada:
-
Ada pemanggilan baru dan tidak ada lingkungan eksekusi yang cocok
-
Terjadi deployment perangkat lunak Worker waktu aktif internal
-
Konfigurasi konkurensi yang disediakan diterbitkan
-
Waktu sewa di lingkungan eksekusi, atau Worker, mendekati atau telah melampaui masa pakai maksimum
-
Proses penyeimbangan ulang beban kerja internal lainnya
Pelanggan dapat mengelola jumlah lingkungan eksekusi yang sudah disediakan yang ada untuk versi fungsi dengan mengonfigurasi konkurensi yang disediakan pada konfigurasi fungsi mereka. Jika dikonfigurasi demikian, Lambda akan membuat, mengelola dan memastikan jumlah lingkungan eksekusi yang dikonfigurasi selalu ada. Hal ini memastikan bahwa pelanggan memiliki kontrol yang lebih besar atas performa perusahaan rintisan dari aplikasi nirserver pada berbagai skala.
Selain melalui konfigurasi konkurensi yang disediakan, pelanggan tidak dapat berkali-kali mengontrol jumlah lingkungan eksekusi yang dibuat atau dikelola oleh Lambda sebagai respons atas pemanggilan.
Peran eksekusi
Setiap fungsi Lambda juga harus dikonfigurasi dengan peran eksekusi, yaitu IAM role yang diasumsikan oleh layanan Lambda saat melakukan operasi bidang kendali dan bidang data yang terkait dengan fungsi tersebut. Layanan Lambda mengasumsikan peran ini untuk mengambil kredensial keamanan sementara yang kemudian tersedia sebagai variabel lingkungan selama pemanggilan fungsi. Demi performa, layanan Lambda akan meng-cache kredensial ini, dan dapat menggunakannya kembali di berbagai lingkungan eksekusi yang menggunakan peran eksekusi yang sama.
Untuk memastikan kepatuhan terhadap prinsip hak akses paling rendah, Lambda merekomendasikan agar setiap fungsi memiliki peran unik, dan dikonfigurasi dengan serangkaian izin minimum yang diperlukan.
Layanan Lambda juga dapat mengasumsikan peran eksekusi untuk melakukan operasi bidang kendali tertentu, seperti yang terkait dengan pembuatan dan konfigurasi Antarmuka jaringan elastis (ENI) untuk fungsi VPC, mengirim log ke Wawasan Aplikasi Amazon CloudWatch
Untuk informasi lebih lanjut tentang subjek ini, lihat halaman dokumentasi Peran eksekusi AWS Lambda.
MicroVM dan Worker Lambda
Lambda akan membuat lingkungan eksekusi di armada instans Amazon EC2 yang disebut Worker AWS Lambda. Worker adalah instans EC2 Nitro
Sebagai bagian dari model tanggung jawab bersama, Lambda bertanggung jawab untuk memelihara konfigurasi keamanan, kontrol, dan tingkat patching Worker. Tim Lambda menggunakan Amazon Inspector

Gambar 3 – Model isolasi untuk Worker AWS Lambda
Masa sewa maksimum Worker adalah 14 jam. Jika Worker mendekati waktu sewa maksimum, tidak akan ada pemanggilan yang akan dirutekan, MVM akan diakhiri, dan instans yang mendasari Worker juga diakhiri. Lambda terus memantau dan memberikan alarm pada aktivitas siklus hidup dari masa pakai armada.
Semua komunikasi bidang data ke workers dienkripsi menggunakan Advanced Encryption Standard dengan Galois/Counter Mode (AES-GCM). Selain melalui bidang data, pelanggan tidak dapat berinteraksi langsung dengan worker karena di-host di jaringan terisolasi Amazon VPC yang dikelola oleh Lambda di akun layanan Lambda.
Saat Worker perlu membuat lingkungan eksekusi baru, maka akan diberi otorisasi terbatas waktu untuk mengakses artefak fungsi pelanggan. Artefak ini dioptimalkan khusus untuk lingkungan eksekusi dan worker Lambda. Kode fungsi yang diunggah menggunakan format ZIP dioptimalkan sekali, kemudian disimpan dalam format terenkripsi menggunakan AES-GCM dan kunci yang dikelola AWS.
Fungsi yang diunggah ke Lambda menggunakan format gambar kontainer juga dioptimalkan. Gambar kontainer pertama kali diunduh dari sumber aslinya, dioptimalkan menjadi potongan yang berbeda, dan kemudian disimpan sebagai potongan terenkripsi menggunakan metode enkripsi konvergen yang diautentikasi yang menggunakan kombinasi AES-CTR