Membuat Lambda Function Sederhana dengan NodeJS

3 min read

Membuat Lambda Function Sederhana dengan NodeJS

Pengertian

Sebenarnya saya tidak tau pengertian apa yang tepat untuk AWS Lambda Ini, Tapi dengan AWS Lambda ini kalian bisa menjalankan fungsi / kode tanpa harus menyetel / mengelola sebuah server.
Dan lambda ini sudah bisa dijalankan dimana saja, kalian tinggal upload code kalian ke lambda maka lambda akan memproses code kalian jika ada perintah yang kalian sampaikan ke AWS Lambda.
Lambda Function akan nge trigger sebuah perintah lalu Lambda akan membaca instruksi lewat sebuah event Lalu AWS Lambda akan me return / menampilkan hasil dari eksekusi tadi.
Dalam AWS Lambda biasanya ada 3 parameter ada event, context, callback
Untuk sekarang kita hanya akan memakan event dan callback, Apa itu event dan callback ?
  • Event untuk event biasanya disini untuk menerima sebuah informasi dari instruksi yang kita kirim untuk eksekusi AWS Lambda ini, Contohnya misal kita mengirim sebuah object dari body nanti event kita gunakan untuk menerima object itu.
{"key":"value"} Jika kalian mengirim sebuah event dengan object begini maka kalian tangkap dengan event.key
  • Callback, Kalau callback disini kita gunakan untuk mereturn hasil dari sebuah Lambda Function didalam callback ini ada 2 parameter ya itu error dan result, Contohnya :
callback(err,result)

Memulai

Pastikan kalian sudah mempunyai akun AWS terlebih dahulu, Jika belum punya dan mau mencoba kalian bisa mendaftarkan free tier untuk menikmati akses gratis ke AWS selama 12 bulan, Check Disini.
Jika sudah punya akunnya sekarang kalia pergi ke Console AWS kalian
Tampilan AWS Management Console
Lalu kalian cari dan pilih services untuk Lambda lalu kalian buka
Tampilan Dashboard Lambda
Jika sudah masuk dashboard Lambda lalu kalian Create Function untuk membuat sebuah function baru
Lalu akan ada beberapa Options untuk sekarang kita akan memilih Options Author From Scracth Lalu dibawahnya ada Basic Information nah untuk Function name isi dengan nama function untuk function yang akan kalian buat misal saja “funFunction” hanya example ya jangan diikutin, Untuk runtime disini kita Pilih Node.js karena seperti Title yah tutorial kali ini hanya untuk NodeJS haha, Permission diisi default saja kita ga usah pusing pusing maenin Role dulu Lalu jika dirasa sudah semua Klik Create Function
Lalu kalian akan masuk ke Dashboard function yang telah kalian buat barusan Setelah itu scroll kebawah kebagian Function Code
Nah disini ada Code entry type, Runtime dan Handler, aku akan jelasin dulu

Code entry type

Untuk Code entry type ada 3 pilihan
  1. Yang pertama adalah Edit code inline, untuk pilihan ini kalian bisa langsung menulis code dari panel code yang sudah disediakan oleh AWS dan untuk seperti test test sekarang kita pakai ini dulu.
  2. Yang kedua adalah Upload a .zip file, untuk yang ini misal dalam script kalian menginstall sebuah modules nah kalian zip dulu file kalian kedalam zip beserta dengan node_modules nya. Lalu kalian upload file zipnya.
  3. Yang kedua adalah Upload a file from Amazon S3, untuk pilihan ini dan jika seperti yang bilang di pilihan 2 kalian zip sebuah script beserta node_modulesnya dan apabila kalian sudah menginstall banyak modules pasti ukuran akan bengkak nah disini kenapa ada opsi ini, Jadi pertama misal ukuran file zipnya melebihi kurang lebih 10mb maka dia tidak akan bisa di upload lewat opsi 2, Maka caranya ialah dengan Mengupload File Zip ke Amazon S3 terlebih dahulu lalu kalian masukan URL File dari S3 kedalam kolom yang sudah di sediakan.

Runtime

Untuk runtime gausah dijelasin lagi deh ya karena diawal sudah dijelasin ini tergantung pilihan kalian akan menjalankan script dengan bahasa pemrograman apa.

Handler

Nah disini Handler untuk mengidentifikasi script / handler apa yang akan kalian gunakan di funFunction. Misal kalian membuat sebuah 2 function atau lebih di local kalian dan kalian tidak mau cape ngezip satu satu jadi kalian men zip langsung semua file dengan satu zip dan satu node modules nah disini laha fungsinya. misal di dalam zip kalian ada file :
function1.js yang berisi
exports.function1Handler = (event,context,callback)=> {}
function2.js yang berisi
exports.function2Handler = (event,context,callback)=> {}
Nah harusnya dari sini kalian sudah mulai paham ya jadi isi dari handler itu kalau digambar “index.handler” maka sama dengan “namafile.namahandler”

Eksekusi

Setelah mengerti kita balik lagi untuk test / eksekusinya nah untuk Test ini kalian disuruh membuat event kalian klik saja Test di pojok kanan atas lalu kalau belum ada event dia langsung mengarah ke event lalu Berinama eventnya lalu klik create.
Lalu kalau sudah klik Test kembali maka akan mereturn hasil
Karena code defaultnya adalah :
exports.handler = async (event) => {
    // TODO implement
    const response = {
        statusCode: 200,
        body: JSON.stringify('Hello from Lambda!'),
    };
    return response;
};
disini mereturn variable response yang berisi object yang memiliki statusCode dan body.
Nah sekarang kita akan membuat sebuah kode sederhana seperti dibawah ini
exports.handler =  (event,context, callback) => {
    
    const firstValue = 3
    const secondValue = 5
    const sumValue = firstValue + secondValue
    
    callback(null, sumValue)
};
Lalu klik Save dan lalu Test lagi seharusnya mereturn Nilai 8
Nah sudah yah, sekarang kita akan mencoba dengan event, pertama kalian klik Dropdown event
Lalu klik Configure test events
Lalu isi seperti screenshot diatas lalu klik Save
Lalu edit scriptnya jadi seperti dibawah ini
exports.handler =  (event,context, callback) => {
    
    const firstValue = event.firstValue
    const secondValue = event.secondValue
    const sumValue = firstValue + secondValue
    
    callback(null, sumValue)
};
Jadi intinya dia ngambil value dari event yang sudah kita buat tadi lalu Kita Save Lagi lalu Kita Test lagi, Dan pastinya akan me return hal yang sama karena pada dasarnya value di event itu sama ^_^
Ok smpe sini dulu tulisannya, mohon maaf jika ada kekurangan terimakasih 😀
0

Leave a Reply

Your email address will not be published. Required fields are marked *