Cara Kirim Notifikasi Email Saat EC2 Instance Dibuat (RunInstances) Terintegrasi dengan CloudWatch Logs
Tentu bro! Di bawah ini saya buatkan workflow process untuk alur notifikasi saat ada resource dibuat (Create) atau dihapus (Delete) di AWS โ menggunakan kombinasi CloudTrail + EventBridge + SNS.
๐งญ Workflow Process: AWS Resource Create/Delete Notification
[1] User/Aplikasi
โ
โผ
[2] Aksi AWS API (Create/ Delete Resource)
โ Contoh:
โ - RunInstances (EC2)
โ - CreateBucket / DeleteBucket (S3)
โผ
[3] CloudTrail
- Mencatat semua aktivitas API call
- Disimpan di S3 bucket (log archive)
โ
โผ
[4] EventBridgeCloudWatch RuleLogs
- Mendeteksi event dari CloudTrail
- Filter eventName:
"prefix: Create" / "prefix: Delete"
โ
โผ
[5] SNS Topic
- Menerima event dari EventBridge
- Mengirim notifikasi ke subscriber
โ
โผ
[6] Email (atau Slack/Telegram jika diintegrasikan)
- Kamu menerima alert
- Info detail: siapa, kapan, event apa
๐ก Penjelasan Singkat per Komponen:
Langkah | Komponen | Fungsi |
---|---|---|
1 | User/API | Seseorang atau sistem membuat/menghapus resource |
2 | API Call | AWS API digunakan โ contoh CreateBucket , RunInstances , DeleteUser |
3 | CloudTrail | Mencatat semua log aktivitas โ jadi sumber audit |
4 | Mendeteksi dan filter hanya event Create/Delete berdasarkan log CloudTrail | |
5 | SNS Topic | Meneruskan event ke endpoint notifikasi (email, webhook, dsb) |
6 | Email Alert | Kamu dapat email berisi info event |
๐ผ๏ธ Versi Diagram Visual (Teks ASCII)
โโโโโโโโโโโโโโโโ
โ User/Script โ
โโโโโโโโฌโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ AWS API Request โ
โ (e.g. RunInstances, Delete)โ
โโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ AWS CloudTrail โ
โ - Catat semua API calls โ
โโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ EventBridgeCloudWatch RuleLogs โ
โ - Filter: Create/Delete โ
โโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ SNS Topic โ
โ - Penerus ke subscriber โ
โโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Email/Slack/Telegram โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Tentu bro, berikut penjelasan singkat tapi jelas biar kamu makin paham:
๐ต๏ธโโ๏ธ Apa itu AWS CloudTrail?
CloudTrail adalah layanan AWS yang mencatat semua aktivitas (API calls) yang terjadi di akun AWS kamu. Termasuk:
-
Siapa yang membuat EC2?
-
Kapan RDS dibuat?
-
Dari IP mana login ke AWS Console?
-
Apakah ada yang menghapus S3 Bucket?
๐ Contoh aktivitas yang dicatat oleh CloudTrail:
-
RunInstances
(membuat EC2) -
CreateBucket
(buat S3) -
PutObject
(upload file ke S3) -
CreateUser
(buat IAM User)
Jadi CloudTrail ini ibarat "CCTV" untuk akun AWS kamu. Semua aktivitas terekam.
๐งฑ Apa itu AWS CloudFormation?
CloudFormation adalah layanan AWS untuk infrastructure as code (IaC). Kamu bisa menulis script (YAML/JSON) untuk:
Membuat resource (VPC, EC2, S3, dll)Mengatur permissionMembuat stack yang bisa di-deploy, update, atau hapus kapan saja
๐ Contoh file CloudFormation (YAML):
Resources:
MyBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: my-logging-bucket-123
Jadi CloudFormation seperti "template" yang bisa kamu deploy untuk membuat semua resource kamu secara otomatis dan terstruktur.
๐ค Kenapa Pakai CloudFormation?
๐น Kelebihan CloudFormation:
Konsisten โ tidak ada "lupa centang ini" atau "salah region".Bisa versioning (pakai Git).Bisaotomatis setup CloudTrail, EventBridge, SNS, dsb hanya sekali jalan.Mudah di-redeployuntuk lingkungan lain (dev/staging/prod).
๐ง Apakah Bisa Manual Tanpa CloudFormation?
๐ Ya, bisa banget!Kamu bisa setup semuanya manual lewat:
AWS Console (GUI)AWS CLIAWS SDK
Tapi kelemahannya:
Rentan kesalahan (misalnya lupa enable log encryption, salah region).Susah untuk deploy ulang atau replikasi di akun lain.Tidak terekam sebagai "infrastructure as code" โ sulit di-maintain tim.
โ
Rangkuman
๐ How-To: Kirim Notifikasi Email Saat EC2 Instance Dibuat (RunInstances)
๐งญ Tujuan
Membuat sistem monitoring menggunakan AWS CloudTrail, CloudWatch Logs, dan SNS, agar mengirim notifikasi email setiap kali ada aktivitas RunInstances (launch EC2 instance).
๐ง Prasyarat
-
AWS Account aktif
-
IAM user/role dengan permission:
-
CloudTrail (
cloudtrail:CreateTrail
,cloudtrail:PutEventSelectors
, dst) -
CloudWatch (
logs:*
,cloudwatch:*
) -
SNS (
sns:*
) -
EC2 (jika ingin uji coba create instance)
-
๐ช Langkah-langkah
โ 1. Aktifkan AWS CloudTrail
-
Masuk ke AWS Console โ CloudTrail
-
Klik Create trail
-
Isi:
-
Trail name:
global-monitor-trail
-
Enable multi-region trail โ
-
Storage location: Buat bucket baru atau pilih S3 bucket yang sudah ada untuk menyimpan log
-
-
Klik Next hingga selesai
-
Pastikan Logging: Enabled dan log dikirim ke S3 bucket
โ 2. Hubungkan CloudTrail ke CloudWatch Logs
-
Masuk ke trail yang baru dibuat โ Klik Edit
-
Scroll ke bagian CloudWatch Logs
-
Klik Edit
-
Buat:
-
Log group name (misal):
/cloudtrail/global-monitor-trail
-
IAM Role: Buat IAM role baru atau pilih existing role
-
-
Klik Save changes
โ Sekarang log dari CloudTrail akan dikirim ke CloudWatch Logs
โ 3. Buat Metric Filter untuk Deteksi Event RunInstances
-
Masuk ke CloudWatch โ Log groups
-
Pilih log group:
/cloudtrail/global-monitor-trail
-
Buka tab Metric filters
-
Klik Create metric filter
-
Isi:
-
Filter pattern:
{ $.eventName = "RunInstances" }
-
Klik Next
-
Filter name:
EC2LaunchMonitor
-
Namespace:
CloudTrailMetrics
-
Metric name:
EC2Launched
-
Metric value:
1
-
-
Klik Create metric filter
โ 4. Buat Alarm & Notifikasi ke Email
-
Setelah metric filter dibuat, klik Create alarm
-
Konfigurasi:
-
Metric namespace:
CloudTrailMetrics
-
Metric name:
EC2Launched
-
Statistic:
Sum
-
Period:
5 minutes
-
Threshold:
>= 1
-
Whenever metric is... >= 1
-
-
Pilih Create new SNS topic
-
Topic name:
ec2-launch-alerts
-
Email endpoint: masukkan email kamu (misal:
your.email@example.com
)
-
-
Klik Create topic
-
Klik Next, beri nama alarm misalnya
EC2-Launch-Alarm
-
Klik Create alarm
โ 5. Konfirmasi Subscription SNS
-
Cek email kamu
-
Buka email dari AWS SNS, klik tombol Confirm subscription
โ ๏ธ Jika tidak dikonfirmasi, kamu tidak akan menerima notifikasi.
โ 6. Uji Coba
-
Launch EC2 instance dari AWS Console
-
Tunggu 1โ5 menit
-
Kamu akan menerima email alert seperti:
Alarm Name: EC2-Launch-Alarm Reason: Threshold Crossed: 1 datapoint (1.0) was greater than or equal to the threshold (1.0).
๐งผ (Opsional) Cleanup Resources
Jika sudah tidak dibutuhkan, kamu bisa:
-
Delete alarm di CloudWatch
-
Delete SNS topic
-
Delete metric filter
-
Stop atau delete CloudTrail
-
Hapus log group di CloudWatch dan bucket S3
๐ง Tips Tambahan
-
Kamu bisa menambahkan filter lain seperti:
-
TerminateInstances
โ saat EC2 dihapus -
CreateSecurityGroup
,AuthorizeSecurityGroupIngress
โ saat security group dimodifikasi
-
-
Ingin kirim ke Slack/Telegram? SNS bisa di-subscribe ke Lambda Function untuk integrasi lanjutan
Kalau mau saya buatkan versi PDF atau Markdown-nya, tinggal bilang aja!