Membuat Serverless Lambda Python
Serverless adalah framework yang memudahkan kita deploy program ke AWS Lambda atau provider lainnya. Keuntungan dari kombinasi Serverless dengan AWS Lambda antara lain
Serverless adalah framework yang memudahkan kita deploy program ke AWS Lambda atau provider lainnya. Keuntungan dari kombinasi Serverless dengan AWS Lambda antara lain:
- biaya infrastruktur yang sangat murah (hanya $0.00001667 per detik untuk 1024MB memory, atau sekitar Rp 0.25 per detik)
- deployment yang tertata rapi karena menggunakan AWS CloudFormation (semacam Infrastructure as Code)
- 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:
- setup akun IAM untuk Command-Line di komputer;
- memasang program yang diperlukan Serverless; dan
- 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:
handler.py
, file program Python; danserverless.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
.
Klik fungsi Lambda tersebut, lalu kita akan melihat tampilan seperti ini:
Tekan tombol Test
yang ada di bagian kanan atas. Anda akan melihat sebuah formulir untuk konfigurasi test event
.
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.
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.