Post

Mengelola AWS EC2 Menggunakan Lambda

Mengelola AWS EC2 Menggunakan Lambda

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:

  1. Membuat instance pada EC2, bisa menggunakan terraform.

  2. Membuat IAM Role

  3. Membuat lambda function untuk stop instance

  4. Membuat lambda function untuk start instance

  5. Hapus sumber daya

Prasyarat

  1. Terraform (optional)

  2. 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:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
      {
        "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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
      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.

  • dddd

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

  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
      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

Referensi:

This post is licensed under CC BY 4.0 by the author.