Serverless adalah framework yang memudahkan kita deploy program ke AWS Lambda atau provider lainnya. Keuntungan dari kombinasi Serverless dengan AWS Lambda antara lain:

  1. biaya infrastruktur yang sangat murah (hanya $0.00001667 per detik untuk 1024MB memory, atau sekitar Rp 0.25 per detik)
  2. deployment yang tertata rapi karena menggunakan AWS CloudFormation (semacam Infrastructure as Code)
  3. perubahan infrastructure dapat dilacak di repository karena (AWS CloudFormation)

Pada kesempatan kali ini saya akan memandu Anda untuk membuat proyek Serverless di AWS Lambda dengan bahasa program Python. Lingkupnya cukup kecil, yaitu mengenalkan saja agar Anda bisa:

  1. setup akun IAM untuk Command-Line di komputer;
  2. memasang program yang diperlukan Serverless; dan
  3. deploy ke akun AWS.

Persiapan Akun IAM di AWS dan Command-Line

Anda perlu menyiapkan sebuah akun IAM di AWS, bisa mengikuti tutorial berikut:
Creating an IAM User in Your AWS Accout.

Dilanjutkan dengan konfigurasi kredensial AWS untuk Command line, bisa mengikutitutorial berikut:
Configuring the AWS CLI.

Persiapan Command-Line Serverless

Pertama-tama kita perlu memasang NodeJS di komputer. Saya asumsikan Anda menggunakan Linux Ubuntu atau Windows 10 WSL (Ubuntu pula), untuk distro Linux lain bisa lihat di panduan instalasi NodeJS.

Pertama kita tambahkan info sumber NodeJS:

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -


Lalu pasang NodeJS:

sudo apt-get install -y nodejs


Selanjutnya kita pasang Serverless CLI:

npm install -g serverless


Nah sekarang kita buat sebuah proyek Serverless dengan Python 3 menggunakan perintah berikut:

sls create --template aws-python3 --path proyek-pertama

Di dalam folder proyek-pertama kita akan memiliki beberapa file penting berikut:

  1. handler.py, file program Python; dan
  2. serverless.yml, file konfigurasi proyek.

Bukalah file handler.py dan sesuaikan menjadi seperti berikut:

import json

def utama(event, context):
    return {
        "message": "Ini program Serverless saya di AWS Lambda",
    }

Selanjutnya sesuaikan file serverless.yml dan sesuaikan menjadi seperti ini:

service: proyek-pertama
provider:
  name: aws
  runtime: python3.6
  stage: dev
  region: ap-southeast-1

functions:
  utama:
    handler: handler.utama

Dapat dilihat kita menggunakan nilai ap-southeast-1 untuk region, artinya
kita ingin deploy proyek Serverless ini ke region AWS di Singapura.

Nah selanjutnya kita deploy proyek kita menggunakan perintah:

sls deploy


Ini pesan log di Command-Line saya menggunakan Ubuntu di WSL Windows 10:

Serverless: Packaging service...
Serverless: Excluding development dependencies...
Serverless: Creating Stack...
Serverless: Checking Stack create progress...
.....
Serverless: Stack create finished...
Serverless: Uploading CloudFormation file to S3...
Serverless: Uploading artifacts...
Serverless: Uploading service .zip file to S3 (242 B)...
Serverless: Validating template...
Serverless: Updating Stack...
Serverless: Checking Stack update progress...
...............
Serverless: Stack update finished...
Service Information
service: proyek-pertama
stage: dev
region: ap-southeast-1
stack: proyek-pertama-dev
api keys:
  None
endpoints:
  None
functions:
  utama: proyek-pertama-dev-utama

Silahkan login ke AWS Console. Selanjutnya pilih menu Lambda, kita akan mendapatkan fungsi Lambda dengan nama seperti proyek-pertama-dev-utama.

Daftar fungsi AWS Lambda
Daftar fungsi AWS Lambda

Klik fungsi Lambda tersebut, lalu kita akan melihat tampilan seperti ini:

Fungsi AWS Lambda
Fungsi AWS Lambda

Tekan tombol Test yang ada di bagian kanan atas. Anda akan melihat sebuah formulir untuk konfigurasi test event.

Event value untuk test AWS Lambda
Event value untuk test AWS Lambda

Kita belum pernah konfigurasi sebelumnya, jadi perlu membuatnya sekarang.
Isi nilai ContohSaja di Event name, lalu tekan tombol Create.

Terkahir, tekan lagi tombol Test yang ada di kanan atas. Kita akan melihat
sebuah kotak hijau yang berisi informasi eksekusi fungsi AWS Lambda kita.

Menjalankan AWS Lambda
Menjalankan AWS Lambda

Simpulan

Di tutorial kali ini kita sudah mencoba langsung membuat sebuah proyek Serverless AWS Lambdayang sederhana, menggunakan Python 3 sebagai bahasa program. Semoga bermanfaat bagi Anda di lingkungan kerja atau pun sebagai hobi.