AWS Lambda adalah salah satu layanan yang populer dari Amazon Web Services (AWS).Dia juga adalah salah satu komponen yang membuat kata "Serverless" menjadi populer.Namun salah satu syarat yang harus dipenuhi sebelum kita bisa bereksperimen dengan AWS Lambdaadalah sebuah IAM Role. Di tutorial ini saya akan memberikan contoh untuk membuatnya.


Membuat IAM Role

Kita dapat memberikan hak akses kepada dua tipe pengguna di akun AWS:

  1. IAM User, identik dengan pengguna manusia yang menggunakan AWS Console atau pun via API AWS dan AWS CLI; dan
  2. IAM Role, sumber daya AWS yang dapat mengkonsumsi sumber daya AWS lainnya atau melakukan perubahan seperti Lambda, EC2 dan sebagainya.

Kita perlu membuat IAM Role untuk mengizinkan sumber daya AWS mengakses sumber daya AWS lainnya. Contohnya adalah:

  1. mengizinkan AWS Lambda untuk mendapatkan daftar bucket Amazon S3 yang,
  2. mengizinkan AWS Lambda untuk upload file ke Amazon S3,
  3. menulis data ke tabel AWS DynamoDB, dan
  4. lain-lainnya.

Pada tutorial ini saya akan membuat IAM Role agar Lambda bisa mengambil daftar bucket Amazon S3.

Pertama-tama silahkan login ke AWS Console. Klik tombol "Services" yang ada di pojok kiri atas, ketikkan "IAM", lalu pilih menu "IAM".

Mencari menu IAM di AWS Console
Mencari menu IAM di AWS Console

Selanjutnya Anda akan melihat panel "Identity and Access Management" seperti berikut:

Panel administrasi IAM di AWS Console
Panel administrasi IAM di AWS Console

Silahkan pilih menu "Roles" yang ada di sebelah kiri, akan muncul daftar IAM Role seperti ini:

Daftar IAM Role di AWS Console
Daftar IAM Role di AWS Console

Sekarang tekan tombol "Create role" yang ada di atas. Pilihlah "Lambda" sebagai layanan yang akan menggunakan IAM Role ini, seperti di gambar berikut, lalu muncul tampilan pilihan seperti ini:

Langkah 1 - memilih service untuk IAM Role di AWS Console
Langkah 1 - memilih service untuk IAM Role di AWS Console

Tekan tekan tombol "Next: Permissions". Selanjutnya kita akan melihat daftar IAM Policy yang akan diizinkan untuk IAM Role ini. Di tutorial ini saya memilih policy "AmazonS3FullAccess". Silahkan tekan tombol "Next: Tags" untuk melanjutkan.

Langkah 2 - memilih policy untuk IAM Role di AWS Console
Langkah 2 - memilih policy untuk IAM Role di AWS Console

Anda akan melihat halaman "Tags". Silahkan tambahkan tag jika diperlukan. Di gambar di bawah, saya menambahkan tag Key "Departemen" dengan Value "Keuangan".

Langkah 3 - menambahkan tag untuk IAM Role di AWS Console
Langkah 3 - menambahkan tag untuk IAM Role di AWS Console

Terakhir kita akan melihat halaman review pembuatan IAM Role. Silahkan isikan "Role name". Anda bisa juga mengisi "Role description" jika dibutuhkan. Kini saatnya tekan tombol "Create role".

Langkah 4 - review pembuatan IAM Role di AWS Console
Langkah 4 - review pembuatan IAM Role di AWS Console

Selamat, IAM Role untuk AWS Lambda sudah dibuat. AWS Console pun menampilkan konfirmasi seperti ini:

IAM role untuk Lambda sudah dibuat di AWS Console
IAM role untuk Lambda sudah dibuat di AWS Console

Membuat AWS Lambda pakai IAM Role yang telah dibuat

Sekarang saatnya kita membuat AWS Lambda dan menggunakan IAM Role yang telah kita buat tadi. Silahkan klik menu "Services" yang ada di pojok kiri atas, ketikkan "Lambda", lalu pilih menu "Lambda".

Memilih menu Lambda di AWS Console
Memilih menu Lambda di AWS Console

Anda akan melihat panel administrasi "AWS Lambda". Tekan tombol "Create function" yang ada di kanan.

AWS Lambda panel di AWS Console
AWS Lambda panel di AWS Console

AWS Console akan menampilkan sebuah formulir untuk membuat sebuah AWS Lambda. Silahkan:

  1. isi nama;
  2. pilih "Runtime", saya memilih Python 3.6;
  3. pilih "Choose an existing role";
  4. pilih IAM Role yang sudah kita buat di tahap sebelumnya;
  5. terakhir tekan tombol "Create function".
Form membuat AWS Lambda Function
Form membuat AWS Lambda Function

Kita akan melihat AWS Lambda Function yang telah dibuat, seperti di gambar berikut:

AWS Lambda Function yang dibuat
AWS Lambda Function yang dibuat

Saya telah membuat sebuah kode Python 3.6 yang cukup sederhana, yang intinya akan mengambil daftar bucket Amazon S3 yang ada di akun Anda. Anda bisa tinggal copy-paste kode yang ada di bawah ini ke AWS Lambda Function Anda, lalu tekan tombol "Save" yang ada di pojok kanan atas.

import boto3
import json

def lambda_handler(event, context):
    s3 = boto3.client('s3')
    
    response = s3.list_buckets()
    
    buckets = []
    
    for b in response['Buckets']:
        if 'contoh' in b['Name']:
            buckets.append(b['Name'])
    
    print(json.dumps(buckets, default=str, indent=4))
    
    return "Selesai dengan baik - Dojotek"

Silahkan buat sebuah "test configuration", lalu tekan tombol "Test". Berikut ini tampilan hasil eksekusi AWS Lambda saya, menggunakan IAM Role yang telah dibuat. Anda dapat melihat tiga nama bucket Amazon S3, yang memiliki kata "contoh" di namanya.

Hasil eksekusi AWS Lambda dengan IAM Role
Hasil eksekusi AWS Lambda dengan IAM Role

Simpulan

Selamat, Anda sudah berhasil membuat IAM Role dan sebuah AWS Lambda function. Semoga tutorial ini bermanfaat.