Mengelola AWS EC2 Menggunakan Lambda

I'm Cloud DevOps Enthusiast | AWS Community Builders.
Overview
AWS Lambda adalah layanan komputasi tanpa server yang memungkinkan untuk menjalankan kode tanpa harus memprovision atau mengelola server. Lambda mengelola semua kapasitas infrastruktur dan skala secara otomatis, sehingga kita bisa fokus pada penulisan kode tanpa harus khawatir tentang perawatan server. Lambda juga memungkinkan kita untuk menjalankan kode secara event-driven, artinya kode hanya dijalankan saat dipicu oleh suatu kejadian atau event yang telah ditentukan sebelumnya.
Dengan menggunakan AWS Lambda, kita dapat mempercepat waktu pengembangan dan mengurangi biaya operasional, karena infrastruktur server akan diatur secara otomatis oleh AWS Lambda. Dalam tulisan ini, kita akan menggunakan AWS Lambda untuk mengontrol instances pada Amazon EC2, yaitu menghentikan, memulai dan melindungi instances.
Adapun langkah-langkah yang akan dilakukan adalah sebagai berikut:
Membuat instance pada EC2, bisa menggunakan terraform.
Membuat IAM Role
Membuat lambda function untuk stop instance
Membuat lambda function untuk start instance
Hapus sumber daya
Prasyarat
Terraform (optional)
Akun AWS
Langkah-langkah
Step 1 - Buat Instance pada EC2
Untuk membuat instance pada AWS EC2, kita akan menggunakan terraform untuk provisioning EC2 pada repo github berikut: Github
Jika belum pernah menggunakan terraform bisa dari AWS console.
buka AWS Management Console, lalu pilih EC2. Klik "Launch Instance" dan pilih Amazon Machine Image (AMI)
Pilih instance type dan konfigurasikan security group.
Llik "Review and Launch"
klik "Launch" untuk menyelesaikan proses.
Step 2 - Buat IAM Role
Untuk membuat IAM Role
buka AWS Management Console dan pilih "IAM".
Pilih "Roles" dan klik "Create role".
Pilih "AWS service" dan pilih service "Lambda" klik next

Selanjutnya buat policy, dan beri nama pada role tersebut.

selanjutnya pilih JSON

isi sebagai berikut:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:*" }, { "Effect": "Allow", "Action": [ "ec2:Start*", "ec2:Stop*" ], "Resource": "*" } ] }
Step 3 - Membuat lambda function untuk stop instance
Membuat Lambda function untuk menghentikan instance,
buka AWS Management Console dan pilih "Lambda".
Klik "Create Function".
Pilih "Author from scratch",
beri nama pada function, pilih runtime python, selanjutnya klik create function

Pada permission, pilih "use an execution role", dan pilih existing role.

Selanjutnya, tambahkan script python untuk menghentikan instance dan klik deploy
import boto3 import os import json region = 'us-east-1' ec2 = boto3.client('ec2', region_name=region) def lambda_handler(event, context): instances=os.environ['EC2_INSTANCES'].split(",") ec2.stop_instances(InstanceIds=instances) print('stopped instances: ' + str(instances))
tambahkan environment variable


Test event, klik tab Test
Create new event kemudian klik Test


Lihat list instance apakah sudah berhasil distop, terlihat instance sudah berhasil distop.


Step 4 - Membuat lambda function untuk start instance
Sekarang kita akan membuat Lambda function untuk menjalankan instance,
buka AWS Management Console dan pilih "Lambda".
Klik "Create Function".
Pilih "Author from scratch",
beri nama pada function, pilih runtime python, selanjutnya klik create function
Pada permission, pilih "use an execution role", dan pilih existing role.
Selanjutnya, tambahkan script python untuk menghentikan instance dan klik deploy
import boto3 import os import json region = 'us-east-1' ec2 = boto3.client('ec2', region_name=region) def lambda_handler(event, context): instances=os.environ['EC2_INSTANCES'].split(",") ec2.start_instances(InstanceIds=instances) print('started instances: ' + str(instances))
tambahkan environment variable


Test event, klik tab Test
Create new event kemudian klik Test


Lihat list instance apakah statunya running, terlihat instance sudah berhasil runnning dimana sebelumnya statusnya masih stopped.


Step 5 - Hapus sumber daya
Hapus lambda yang sudah dibuat sebelumnya
Hapus kedua instances




