Membangun Sistem Auto-Resize Gambar dengan AWS Lambda dan S3
Pelajari cara membangun sistem resize gambar otomatis menggunakan AWS Lambda dan Amazon S3. Tutorial lengkap dengan konfigurasi IAM, environment variables, dan S3 triggers.
Pendahuluan
Dalam pengembangan aplikasi modern, kebutuhan untuk memproses gambar secara otomatis menjadi semakin penting. AWS Lambda menyediakan solusi serverless yang efisien untuk menangani tugas-tugas pemrosesan gambar seperti resize, konversi format, dan optimisasi. Artikel ini akan memandu Anda dalam membangun sistem auto-resize gambar menggunakan AWS Lambda dan Amazon S3.
Arsitektur Sistem
Sistem yang akan dibangun terdiri dari tiga komponen utama:
- Amazon S3 sebagai penyimpanan gambar original dan thumbnail
- AWS Lambda sebagai engine pemrosesan gambar
- IAM Roles untuk mengatur hak akses dan keamanan
Implementasi Langkah demi Langkah
1. Persiapan Amazon S3 Buckets
Pertama, buka konsol Amazon S3 dan buat dua bucket dengan konvensi penamaan yang jelas:
Buat dua bucket dengan nama berikut:
amazn-s3-demo-user-images-bucket(untuk gambar original)amazn-s3-demo-user-thumbnails-bucket(untuk gambar hasil resize)
Penamaan bucket yang deskriptif memudahkan identifikasi tujuan masing-masing bucket dalam arsitektur sistem.
2. Upload Gambar Original
Upload file gambar ke bucket amazn-s3-demo-user-images-bucket untuk testing:
Verifikasi dengan membuka objek tersebut:
3. Konfigurasi AWS Lambda Function
Buka layanan AWS Lambda dan buat fungsi baru:
Isi informasi dasar fungsi dengan konfigurasi berikut:
- Runtime: Node.js
- Architecture: x86_64
4. Konfigurasi IAM Role
Klik View the nama_role role on the IAM console untuk mengatur hak akses:
Atur kebijakan akses untuk mengizinkan akses ke layanan yang diperlukan:
- Amazon S3 (akses baca/tulis bucket)
- AWS Lambda (eksekusi fungsi)
- CloudWatch Logs (logging dan monitoring)
Prinsip least privilege harus diterapkan dengan hanya memberikan izin yang benar-benar diperlukan.
5. Optimasi Konfigurasi Lambda
Setelah fungsi dibuat, pergi ke tab Configuration dan atur memory menjadi 512 MB:
Pemrosesan gambar membutuhkan memory yang cukup besar. Konfigurasi 512 MB memberikan keseimbangan antara performa dan biaya.
6. Environment Variables
Pada bagian Environment Variables, atur variabel berikut:
- Key:
DEST_BUCKET - Value:
amazn-s3-demo-user-thumbnails-bucket
Environment variables memungkinkan konfigurasi dinamis tanpa mengubah kode, memudahkan deployment di berbagai environment.
7. Deployment Kode Fungsi
Pergi ke tab Code dan pilih Upload from .zip file:
Upload file functions.zip yang tersedia di repository GitHub:
8. Testing Fungsi Lambda
Pergi ke tab Test dan atur event template menjadi S3 Put:
Modifikasi test event dengan konfigurasi berikut:
1
2
3
"name": "amazn-s3-demo-user-images-bucket"
"arn": "arn:aws:s3:::amazn-s3-demo-user-images-bucket"
"key": "HMDT.png"
Pastikan nilai key sesuai dengan nama gambar yang ada di bucket S3:
Klik Test dan verifikasi output success:
1
2
3
4
{
"statusCode": 200,
"body": "Successfully resized amazn-s3-demo-user-images-bucket/HMDT.png and uploaded to amazn-s3-demo-user-thumbnails-bucket/HMDT.png"
}
9. Verifikasi Hasil Resize
Gambar yang telah di-resize akan muncul di bucket amazn-s3-demo-user-thumbnails-bucket:
Buka gambar untuk memverifikasi ukuran yang telah berubah:
10. Konfigurasi Trigger Otomatis
Tambahkan trigger untuk mengotomasi proses resize:
Atur trigger configuration dengan memilih bucket sumber. Centang acknowledgment untuk recursive invocation:
Recursive invocation acknowledgment diperlukan untuk mencegah infinite loop ketika fungsi Lambda menulis kembali ke bucket yang sama.
11. Testing Sistem Lengkap
Sekarang, setiap upload gambar ke amazn-s3-demo-user-images-bucket akan secara otomatis memicu proses resize dan menyimpan hasilnya ke amazn-s3-demo-user-thumbnails-bucket:
Kesimpulan
Sistem auto-resize gambar menggunakan AWS Lambda dan S3 yang telah dibangun memberikan solusi yang scalable dan cost-effective untuk pemrosesan gambar. Arsitektur serverless ini menghilangkan kebutuhan untuk mengelola server, secara otomatis menangani scaling, dan hanya membebankan biaya berdasarkan penggunaan aktual.
Keuntungan implementasi ini:
- Otomasi penuh proses resize gambar
- Scalability tanpa batas
- Cost-effective dengan model pembayaran per penggunaan
- Integrasi native antara layanan AWS
Sistem ini dapat dikembangkan lebih lanjut dengan menambahkan fitur seperti konversi format, optimisasi kualitas, atau integrasi dengan CDN untuk distribusi yang lebih efisien.




















