Apa itu Lambda@Edge
Lambda@Edge adalah fitur unik dari Amazon CloudFront yang dirancang untuk menyediakan pengguna dengan lingkungan komputasi serverless yang lebih efisien. Ini memungkinkan para pengembang untuk mengeksekusi kode kustom mereka di lokasi tepi (edge) di seluruh dunia, mendekatkannya dengan pengguna akhir. Layanan komputasi serverless ini memungkinkan Anda menjalankan kode tanpa perlu memprovisioning atau mengelola server, sehingga menyederhanakan alur kerja Anda dan mengurangi waktu yang dibutuhkan untuk meluncurkan aplikasi Anda.
Bagaimana Lambda@Edge Bekerja
Cara kerja Lambda@Edge relatif sederhana namun brilian. Ketika sebuah peristiwa memicu permintaan CloudFront (seperti permintaan HTTP), permintaan tersebut diarahkan ke lokasi tepi yang geografis terdekat dengan pengguna. Selanjutnya, fungsi Lambda@Edge yang sesuai dieksekusi, memproses permintaan, dan mengirimkan respons ke aplikasi pengguna.
Proses ini terjadi secara real-time, memungkinkan para pengembang untuk memanipulasi permintaan dan respons HTTP di lokasi tepi, membuat keputusan berdasarkan faktor-faktor spesifik pengguna, seperti perangkat yang digunakan, lokasi, atau kuki.
Komponen Utama dari Lambda@Edge
Lambda@Edge pada dasarnya adalah sistem yang terdiri dari beberapa komponen utama:
-
Fungsi AWS Lambda
Fungsi Lambda adalah kode kustom yang ditulis oleh para pengembang. Kode tersebut dapat ditulis dalam bahasa yang didukung oleh AWS Lambda, seperti Node.js, Python, atau Java. -
Sumber Peristiwa (Event Source)
Sumber peristiwa adalah entitas yang memicu eksekusi fungsi Lambda. Pada kasus Lambda@Edge, sumber peristiwa akan menjadi peristiwa CloudFront. -
Lokasi Tepi (Edge Location)
Ini adalah lokasi AWS yang terdekat dengan pengguna akhir. Di sinilah fungsi Lambda dieksekusi. -
Amazon CloudFront
Ini adalah layanan content delivery network (CDN) yang menyediakan pengiriman data, aplikasi, dan API kepada pelanggan secara global dengan latensi rendah dan kecepatan transfer yang tinggi. CloudFront terintegrasi dengan layanan AWS seperti AWS Shield untuk mitigasi DDoS.
Peristiwa CloudFront yang Dapat Diatur
Peristiwa CloudFront mewakili titik-titik dalam aliran penanganan permintaan di mana Anda dapat menyisipkan fungsi Lambda. Peristiwa-peristiwa ini memberikan kaitan (hooks) ke dalam siklus hidup suatu permintaan dan memungkinkan para pengembang menyisipkan logika kustom pada berbagai tahap.
Using AWS Lambda with CloudFront Lambda@Edge
Viewer Request
Peristiwa permintaan dari viewer terjadi ketika CloudFront menerima permintaan dari seorang viewer, sebelum memeriksa cache-nya untuk konten yang diminta. Fungsi Lambda yang dihubungkan dengan peristiwa ini dapat memeriksa dan mengubah permintaan sebelum CloudFront melanjutkan proses biasa. Ini sangat berguna untuk tugas seperti memeriksa kuki untuk mengimplementasikan pengujian A/B atau mengubah URL untuk optimasi SEO.
Origin Request
Peristiwa permintaan ke server asal terpicu ketika CloudFront meneruskan permintaan ke server asal, setelah gagal menemukan konten yang diminta di cache-nya. Fungsi Lambda@Edge yang terpasang pada peristiwa ini memiliki kesempatan untuk mengubah permintaan yang akan dikirim ke server asal. Penggunaan kasus meliputi pembuatan permintaan HTTP untuk mengamankan konten pribadi dan mengubah header permintaan sebelum mengirimkannya ke server asal.
Origin Response
Peristiwa respon dari server asal dipicu ketika CloudFront menerima respons dari server asal, tetapi sebelum menyimpan respons tersebut di cache-nya. Ini adalah kesempatan untuk mengubah respons dari server asal, termasuk mengubah header, mengompresi konten, atau menambahkan header kustom untuk tujuan caching.
Viewer Response
Peristiwa respon ke viewer adalah peristiwa terakhir dalam aliran penanganan permintaan. Hal ini terjadi tepat sebelum CloudFront mengirimkan respons kembali ke viewer. Fungsi Lambda yang dihubungkan dengan peristiwa ini dapat memanipulasi respons, menambahkan atau mengubah header, atau mengubah isi dari respons. Ini merupakan waktu yang tepat untuk mengimplementasikan langkah-langkah keamanan seperti menambahkan header keamanan atau menyamarkan data sensitif.
Batasan Lambda@Edge
Menggunakan Lambda@Edge dalam aplikasi Anda memberikan banyak manfaat, tetapi juga memiliki beberapa batasan dan pembatasan yang perlu diketahui oleh para pengembang.
Persyaratan Daerah Penyediaan
Saat ini, semua fungsi Lambda@Edge harus dibuat di wilayah North Virginia (us-east-1) dari AWS. Meskipun fungsi Anda akan dijalankan di lokasi-lokasi di seluruh dunia, fungsi yang Anda buat akan berada di North Virginia.
Penomoran Fungsi Lambda
Ketika Anda mengaitkan fungsi Lambda dengan distribusi CloudFront, Anda harus menyediakan versi ARN (Amazon Resource Name) fungsi Lambda yang sudah diberi nomor.
Anda tidak dapat menggunakan versi $LATEST
; sebaliknya, Anda harus menentukan versi numerik dari fungsi Anda atau alias. Ini adalah persyaratan penting untuk memastikan bahwa CloudFront dan lokasi-lokasi tepi Anda tahu dengan pasti versi mana dari fungsi Anda yang akan dieksekusi.
Referensi