TeknoCerdas.com – Salam cerdas untuk kita semua. Salah satu berita yang menarik perhatian bulan ini adalah dirilisnya Deno versi 1.0. Tulisan ini berfokus pada cara membuat Deno runtime untuk AWS Lambda. Custom runtime pada AWS Lambda disebut juga sebagai Lambda Layer.
Deno adalah runtime untuk Javascript dan Typescript yang dibuat oleh Ryan Dahl. Ryan sendiri merupakan pencipta dari NodeJS.
Bagian kedua dari tulisan ini akan membahas bagaimana membuat API menggunakan Deno pada AWS Lambda. Sehingga pada tulisan ini bahasan hanya sampai pembuatan custom runtime untuk Deno.
Daftar Isi:
Persiapan Membuat Deno Runtime
Sebelum mulai membuat Deno runtime untuk AWS Lambda terdapat beberapa prasyarat yang harus anda penuhi.
- Memiliki akun AWS yang aktif
- Memiliki pemahaman dasar tentang AWS Lambda
- Memiliki pemahaman dasar tentang AWS IAM
- Memiliki pemahaman dasar tentang AWS CLI
- Memiliki pemahaman dasar tentang AWS S3
- Memiliki pemahaman dasar tentang HTTP dan JSON
- Memiliki pemahaman dasar tentang Deno dan Shell script
Jika anda tidak memiliki prasyarat diatas silahkan lanjutkan membaca. Karena mungkin banyak informasi baru yang diperoleh meskipun tanpa mencoba langsung tutorial ini.
Membuat Deno Runtime
Custom runtime pada Lambda secara default hanya memiliki sedikit program yang terinstall didalamnya. Sistem operasi yang digunakan oleh AWS Lambda pada custom runtime adalah Amazon Linux 1. Sudah tentu program seperti Deno tidak dimasukkan secara default pada custom runtime karena terlalu spesifik.
Karena itu digunakan Lambda Layer yang dapat diisi library atau program yang diperlukan. Disini kita akan memasukkan file executable dari Deno ke dalam custom runtime yang dibuat.
Struktur dari Deno runtime yang dibuat sangat sederhana karena hanya terdiri dari sebuah file saja yaitu deno
.
+ bin/
- deno
Binary dari deno
yang digunakan tidak berasal dari Deno official release. Hal ini karena file binary official deno
tidak dapat berjalan pada CentOS 7/RHEL 7 karena masalah glibc. Amazon Linux 1 sendiri adalah distribusi yang diturunkan dari CentOS 7/RHEL 7. Untuk itu kita akan menggunakan binary Deno dari github.com/hayd.
Urutan untuk membuat Deno runtime adalah sebagai berikut.
- Buat struktur direktori yang diperlukan
- Download file binary Deno ke diretory
bin/
- Zip direktori
bin/
lalu upload ke S3 - Buat Layer baru di AWS Lambda console
- Gunakan layer yang diupload dari S3 sebagai sumber
- Selesai
Kita mulai dari membuat struktur direktori untuk Deno runtime terlebih dahulu.
$ mkdir -p build layer/bin tmp
Sekarang download binary release dari Deno.
$ curl -L 'https://github.com/hayd/deno-lambda/releases/download/1.0.2/amz-deno.gz' -o tmp/amz-deno.gz
$ gunzip tmp/amz-deno.gz -c > layer/bin/deno
$ chmod +x layer/bin/deno
Lakukan archive pada direktori layer/
kemudian upload ke S3. Pastikan anda memiliki permission untuk mengupload pada S3 bucket yang dituju.
$ cd layer && zip ../build/layer.zip -r ./ && cd ..
$ aws s3 cp build/layer.zip s3://your-bucket-name/layer.zip
Membuat Lambda Layer pada AWS Console
Setelah runtime untuk Deno berhasil dibuat. Saatnya kita membuat Lambda Layer yang berisi Deno runtime yang dibuat sebelumnya. Disini kita akan menggunakan AWS Console untuk membuat Lambda Layer.
- Masuk pada layanan AWS Lambda
- Masuk pada halaman Layers
- Pada Name isikan “MyDenoLayer”
- Pilih Upload a file from Amazon S3 pada pilihan sumber runtime.
- Masukkan URL dari S3 yang diupload pada langkah sebelumnya, misal “https://s3.amazonaws.com/your-bucket-name/layer.zip”
- Pada pilihan Compatible runtimes pilih “Custom runtime”
- Akhiri dengan menekan Create
Lambda Layer yang berisi Deno runtime berhasil dibuat. Berikutnya adalah menggunakan Layer tersebut untuk membuat API menggunakan Deno. Ikuti tautan berikut untuk mengikuti tulisan lanjutan.
Membuat API menggunakan Deno pada AWS Lambda
Ketika fungsi Lambda menggunakan Lambda Layer yang barus aja dibuat maka secara otomatis ketika Lambda tersebut dijalankan akan tersedia Deno runtime pada lokasi /opt/bin/deno
.
Kode Sumber
Kode sumber untuk tutorial ini dapat anda lihat pada tautan github berikut:
https://github.com/rioastamal-examples/lambda-custom-deno-runtime
Pada kode sumber tersebut terdapat Terraform script yang digunakan untuk membangun semua resources yang dibutuhkan. Juga terdapat kode Typescript untuk API yang digunakan pada tulisan ini.