Tutorial Serverless: Membuat Deno Runtime untuk AWS Lambda

2 min read

Disclaimer
Saya bekerja di AWS, semua opini adalah dari saya pribadi. (I work for AWS, my opinions are my own.)
Membuat Deno Runtime untuk AWS Lambda
Deno Runtime untuk AWS Lambda (Deno Logo: Wikipedia)

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.

  1. Buat struktur direktori yang diperlukan
  2. Download file binary Deno ke diretory bin/
  3. Zip direktori bin/ lalu upload ke S3
  4. Buat Layer baru di AWS Lambda console
  5. Gunakan layer yang diupload dari S3 sebagai sumber
  6. 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.

  1. Masuk pada layanan AWS Lambda
  2. Masuk pada halaman Layers
  3. Pada Name isikan “MyDenoLayer”
  4. Pilih Upload a file from Amazon S3 pada pilihan sumber runtime.
  5. Masukkan URL dari S3 yang diupload pada langkah sebelumnya, misal “https://s3.amazonaws.com/your-bucket-name/layer.zip”
  6. Pada pilihan Compatible runtimes pilih “Custom runtime”
  7. Akhiri dengan menekan Create
Membuat Lambda Layer untuk Deno Runtime
Membuat Lambda Layer untuk Deno Runtime

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.