≡ Menu

Going Serverless: Setup Account AWS Lambda dan Simple REST Endpoint

Setelah empat bulan mati, blog ini akhirnya bisa up and running lagi.

Di tahun 2019 ini, kemungkinan gue akan banyak nulis tentang cloud. Gimana caranya bikin app development lebih simple dan mudah.

Ya lebih mudah..

Main goal dari serial post ini nantinya adalah membuat webservice dengan aws lambda dengan ClojureScript dan tentunya nantinya akan memakai datomic cloud.

Note: Gue sendiri masih belajar soal cloud ini. So, sangat mungkin akan ada beberapa kesalahan dan langkah yang miss dari tulisan ini. Tetapi gue tetap berusaha untuk nulis sejelas dan se-simple mungkin.

Toolkit

Tahap pertama adalah up and running aws-lambda. Toolkit yang kita perlukan adalah

  • Node & NPM
  • AWS account
  • serverless CLI

Installation

Oke, intall NodeJS terlebih dahulu. Gue nggak akan nulis gimana cara install NodeJS, gue yakin dengan skill googling teman-teman pembaca.

Langkah selanjutnya adalah install serverless-cli.

npm install serverless -g

Setup Account AWS – Credential

Oke, sekarang masuk ke bagian paling fun, setup account AWS. Hal pertama yang kita perlukan dari AWS setup credential untuk aws-lambda.

Gue asumsikan kalian sudah sign-up dan masuk ke AWS Console.

Cari bagian IAM, lalu kik.

Next, pada sidebar kiri, klik Users.

AWS Management Console

Klik gambar untuk memperbesar

Di sidebar kiri, klik bagian Users. Di bagian atas, klik tombol berwarna biru “Add user”.

IAM Management Console 2

Klik gambar untuk memperbesar

Nah, sekarang kita akan membuat user baru untuk AWS Lamda. User ini yang nantinya akan bertanggung jawab memakai AWS Lamda, seperti CLI, API, dan development tool lainnya.

IAM Management Console

Klik gambar untuk memperbesar

Perhatikan, di sini gue membuat user dengan username serverless-tuts. Pastikan centang bagian Programmatic access. Saat ini kita tidak memerlukan AWS Management Console access. Selanjutnya Klik tombol Next: Permissions di bagian kanan bawah.

IAM Management Console Access

Klik gambar untuk memperbesar

Selanjutnya, kita akan memberikan permission policy ke user yang baru kita buat. Kita akan memberikan akses penuh terhadap service AWS. Service ini meliputi Amazon S3, Amazon Lambda, AWS Security Token Service, Amazon CloudWatch Logs, AWS Identity and Access Management, dll.

Permission yang kita berikan adalah AdministratorAccess. Untuk membuatnya, klik bagian Attach existing policies directly. Lalu centang AdministratorAccess. Klik Next untuk melanjutkan.

IAM Management Console Tags 2

Klik gambar untuk memperbesar

Tags ini sifatnya optional, kalian bisa mengisinya dengan atribut semau kalian. Pro tips: gunakan tags untuk grouping users, pastikan tag memiliki field description dan jelaskan user tersebut untuk apa. Klik Next.

Pada saat ini, kita akan dilihatkan preview user yang akan kita buat. Jika terdapat kesalahan penulisan atau management access, kalian bisa kembali dan melakukan perbaikan. Jika tidak klik Create User untuk membuat user.

IAM Management Console Add User

Klik gambar untuk memperbesar

PENTING! di bagian terakhir kalian akan disuguhkan credential untuk user yang baru kita buat. Kalian bisa donwload detailnya sebagai csv. Simpan credential tersebut di tempat yang aman.

Selamat, user baru telah dibuat. User ini akan kita gunakan untuk mengakses service-service yang ada di AWS.

Setup AWS dengan Serverless CLI

Sekarang, kita sudah memiliki account AWS beserta user untuk mengakses servive-service AWS. Langkah selanjutnya adalah memberitahu serverless CLI user AWS tersebut.

serverless config credentials --provider aws --key <Access Key ID> --secret <Secret access key>

Access Key ID dan Secret access key dapat kalian temkan di credential user sebelumnya.

Jika berhasil kita akan diberikan pesan seperti berikut:

Serverless: Setting up AWS...
Serverless: Saving your AWS profile in "~/.aws/credentials"...
Serverless: Success! Your AWS access keys were stored under the "default" profile

Intro to Lambda

Lambda sesuai namanya adalah sebuah function. Function yang dibuat untuk melakukan sesuatu berdasarkan event. Biasanya untuk AWS Lambda function ini dibuat untuk melakukan perintah HTTP Verbs, seperti GET, POST, DELETE, PUT, atau PATCH.

Dengan AWS Lambda yang kita pedulikan adalah bagaimana cara membuat function untuk layer business logic. Kita tidak peduli dengan layer operation. Semua function yang dideploy sudah mendukung autoscaling.

Kita tidak akan peduli lagi dengan resource seperti berapa CPU yang diperlukan, RAM yang dipakai, Storage tersisa, mekanisme caching, scaling dll.

Artinya apa? AWS Lambda memungkinkan kita untuk membuat app dengan serverless architecture.

Lalu bagaimana perhitungan billing di AWS Lambda?

AWS menghitung billing berdasarkan request, nah menariknya untuk satu juta request pertama perbulan, biayanya adalah gratis!. [AWS Lamda pricing]

Simple REST endpoint

Di tutorial ini kita akan membuat Endpoint Hello World sederhana dengan SDK nodejs.

Buat folder untuk project yang akan kita buat.

mkdir hello-world-aws-lambda
cd hello-world-aws-lambda

Sekarang kita akan membuat script berdasarkan template atau manual. Untuk template lo hanya perlu membuatnya dengan perintah:

serverless create -t aws-nodejs

Untuk cara manual, kita memerlukan file handler.js dan serverless.yml. Buat file tersebud di folder hello-world-aws-lambda

handler.js

'use strict';

module.exports.helloWorld = (event, context, callback) => {
  const response = {
    statusCode: 200, 
    headers: {
      'name': 'Nadiar AS',
    }, 
    body: JSON.stringify({
      message: "Hello world from serverless cli I wrote."
    })
  }; 

  callback(null, response);
};

serverless.yml

service: hello-world-aws-lambda

provider:
  name: aws
  runtime: nodejs8.10

functions:
  helloWorld:
    handler: handler.helloWorld
    events:
      - http:
          path: helloWorld
          method: get

Test script di atas:

serverless invoke local -l -f helloWorld

Result:

{
    "statusCode": 200,
    "headers": {
        "name": "Nadiar AS"
    },
    "body": "{\"message\":\"Hello world from serverless cli I wrote.\"}"
}

Nice! selanjutnya kita tinggal deploy.

serverless deploy

Jika berhasil lo akan dapat terminal seperti di bawah:

Serverless: Stack update finished...
Service Information
service: hello-world-aws-lambda
stage: dev
region: us-east-1
stack: hello-world-aws-lambda-dev
api keys:
  None
endpoints:
  GET - https://2obr84qnad.execute-api.us-east-1.amazonaws.com/dev/helloWorld
functions:
  helloWorld: hello-world-aws-lambda-dev-helloWorld
layers:
  None

Oh ya, gue lupa. Lo bisa set region deploy juga dengan menambahkan flag -r . Contoh jika ingin deploy di South east asia

serverless deploy -r ap-southeast-1

That’s it!

Di bagian satu ini kita sudah membuat account AWS dan setup credentialnya. Kita juga install serverless untuk keperluan CLI. Dan terakhir kita sudah membuat endpoint helloworld sederhana dengan AWS Lambda.

Next part, the real fun begin. Kita akan membuatnya tanpa JavaScript, tetapi ClojureScript! Hope you don’t miss it. Thank you and see you again.

Read more at:
https://serverless.com/framework/docs/providers/aws/guide/credentials/
{ 0 comments… add one }

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.