Simple AWS Lambda (Golang) + API Gateway Dengan Menggunakan Terraform

Hi gengz, kali ini kita bakal coba coba bikin lambda nyok, dengan menggunakan terraform.

Sebelumnya kita mulai dari asumsi dulu ya, asumsi saya adalah :

  • AWS cli sudah terinstall dan login ke account AWS nya
  • Terraform sudah diinstall

Saya sudah nyiapin githubnya, yuk kita clone dulu.

https://github.com/ludesdeveloper/terraform-lambda-golang

git clone https://github.com/ludesdeveloper/terraform-lambda-golang.git
cd terraform-lambda-golang

Saya sudah sediakan script untuk mempermudah, yuk jajal dulu.

cd scripts

Kita mulai dari membuat s3 bucket dulu ya gengz.

./1_create_s3_bucket.sh

Disini kita akan memberi nama pada bucket kita, pastikan namanya unik, karena bucket name tidak boleh sama, saya akan beri nama yang cukup panjang dan kemungkinan unik yaitu “belajar-bareng-bersama-ludes”.

Ntaps, sudah terbuat, silahkan tekan q untuk exit. yuk kita check bucket kita dulu.

Wow, sudah terbuat untuk bucket “belajar-bareng-bersama-ludes”. Bucket readeh, sekarang kita upload codenya.

./2_build_zip_upload.sh

Disini saya memberikan pilihan, untuk membuat versi terhadap aplikasi yang akan kita upload, mari kita ketikkan “1.0.0” untuk versi aplikasi kita.

Ntaps, sudah terupload nih, nah yuk kita buat dulu lambda + api gatewaynya dengan terraform, gaskeun.

./3_terraform_apply_auto_version.sh

Disini akan ada pertanyaan untuk versi, silahkan type versi yang sebelumnya kita buat “1.0.0”.

Tunggu sebentar ya, ngopi ngopi dulu gengz. Terraform akan melakukan init lalu apply.

Waduh, udah selese, yuk coba buka base_url nya di browser.

Easy peasy lemon squeezy ya gengz, udah jadi aja. Nah kita coba rubah code ya. Yuk masuk ke folder, lalu buka dengan IDE anda tercinta. Silahkan buka main.go

cd ../lambda-go

Yuk kita rubah “Hello”(line 17) menjadi “Belajar Sambil Berbagi” seperti dibawah ini.

Jangan lupa disave dulu ya gengz, wajib nih, jangan ditawar. Sehabis itu mari kita ke folder script lagi.

cd ../scripts

Mari kita execute build kembali dengan versi yang berbeda, yaitu “1.0.1”.

./2_build_zip_upload.sh

Cek tipis tipis dulu ya s3 nya.

aws s3 ls s3://belajar-bareng-bersama-ludes

Disini kita bisa lihat, saat ini kita punya 2 versi, “1.0.0” dan “1.0.1”. Yuk kita update dulu di lambdanya seperti dibawah ini.

./3_terraform_apply_auto_version.sh

Kita akan mengetikkan “1.0.1” untuk update versi aplikasi terhadap lambda, yuk eksekusi aja.

Tunggu bentar ya gengz, terraform akan coba init dan apply kembali.

Wah udah jadi aja, yuk tengok lagi di browser kita tercinta.

War byasah, dah ganti gengz.

Untuk mendelete semua yang sudah kita buat, silahkan access script dibawah yang ada di folder scripts

./delete_s3_bucket.sh
./terraform_destroy_auto_version.sh

Nah, saya akan coba bahas tipis tipis ya gengz. Yang pasti bisa dilihat bahwa kita punya 3 folder. Yang pertama “lambda-go” isinya folder code untuk golang. Yang kedua “script” yang isinya adalah kumpulan script untuk mempermudah eksekusi. Yang ketiga “terraform” adalah kumpulan code .tf untuk eksekusi terraform.

Untuk code itu cukup simple, memiliki fungsi handler, saya temukan yang works itu di github berikut untuk lambda

https://github.com/serverless/examples/blob/master/aws-golang-http-get-post/getFolder/getExample.go

package main

import (
        "fmt"

        "github.com/aws/aws-lambda-go/events"
        "github.com/aws/aws-lambda-go/lambda"
)

// Handler function Using AWS Lambda Proxy Request
func Handler(request events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {

        //Get the path parameter that was sent
        name := request.PathParameters["name"]

        //Generate message that want to be sent as body
        message := fmt.Sprintf(" { \"Message\" : \"Belajar Sambil Berbagi %s \" } ", name)

        //Returning response with AWS Lambda Proxy Response
        return events.APIGatewayProxyResponse{Body: message, StatusCode: 200}, nil
}

func main() {
        lambda.Start(Handler)
}

Untuk terraform sumbernya cukup detail dijelaskan disini

https://registry.terraform.io/providers/hashicorp/aws/2.34.0/docs/guides/serverless-with-aws-lambda-and-api-gateway

Untuk script itu saya buat biar gampang aja makenya. di script 1_create_s3_bucket.sh script membaca input dan langsung membuat sebuah file dengan nama bucketname yang nanti akan dibaca pada saat upload file ke arah s3, dan script 1_create_s3_bucket.sh juga akan mengupdate variables.tf yang akan digunakan oleh terraform untuk salah satunya melakukan download file code yang sudah ada di s3.

Contoh disini masih sangat simple, karena hanya membuat function dan mengexposenya, lalu coba untuk mengaksesnya. Semoga dilain kesempatan saya bisa buat yang lebih advance lagi ya gengz.

Semoga bermanfaat.

Satu respons untuk “Simple AWS Lambda (Golang) + API Gateway Dengan Menggunakan Terraform

Add yours

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

Connecting to %s

Situs yang Didukung WordPress.com.

Atas ↑

%d blogger menyukai ini: