Skip to main content

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 EventBridgeCloudWatch RuleLogs 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 permission

  • Membuat 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).

  • Bisa otomatis setup CloudTrail, EventBridge, SNS, dsb hanya sekali jalan.

  • Mudah di-redeploy untuk lingkungan lain (dev/staging/prod).


๐Ÿ”ง Apakah Bisa Manual Tanpa CloudFormation?

๐Ÿ‘‰ Ya, bisa banget!
Kamu bisa setup semuanya manual lewat:

  • AWS Console (GUI)

  • AWS CLI

  • AWS 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

KomponenFungsi
CloudTrailMencatat semua aktivitas API (log audit & keamanan)
CloudFormationTool untuk bikin resource AWS secara otomatis dari file template (IaC)
Manual SetupBisa, tapi rawan error, tidak bisa direplikasi otomatis



๐Ÿ“˜ 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

  1. Masuk ke AWS Console โ†’ CloudTrail

  2. Klik Create trail

  3. 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

  4. Klik Next hingga selesai

  5. Pastikan Logging: Enabled dan log dikirim ke S3 bucket


โœ… 2. Hubungkan CloudTrail ke CloudWatch Logs

  1. Masuk ke trail yang baru dibuat โ†’ Klik Edit

  2. Scroll ke bagian CloudWatch Logs

  3. Klik Edit

  4. Buat:

    • Log group name (misal): /cloudtrail/global-monitor-trail

    • IAM Role: Buat IAM role baru atau pilih existing role

  5. Klik Save changes

โœ… Sekarang log dari CloudTrail akan dikirim ke CloudWatch Logs


โœ… 3. Buat Metric Filter untuk Deteksi Event RunInstances

  1. Masuk ke CloudWatch โ†’ Log groups

  2. Pilih log group: /cloudtrail/global-monitor-trail

  3. Buka tab Metric filters

  4. Klik Create metric filter

  5. Isi:

    • Filter pattern:

      { $.eventName = "RunInstances" }
      
    • Klik Next

    • Filter name: EC2LaunchMonitor

    • Namespace: CloudTrailMetrics

    • Metric name: EC2Launched

    • Metric value: 1

  6. Klik Create metric filter


โœ… 4. Buat Alarm & Notifikasi ke Email

  1. Setelah metric filter dibuat, klik Create alarm

  2. Konfigurasi:

    • Metric namespace: CloudTrailMetrics

    • Metric name: EC2Launched

    • Statistic: Sum

    • Period: 5 minutes

    • Threshold: >= 1

    • Whenever metric is... >= 1

  3. Pilih Create new SNS topic

    • Topic name: ec2-launch-alerts

    • Email endpoint: masukkan email kamu (misal: your.email@example.com)

  4. Klik Create topic

  5. Klik Next, beri nama alarm misalnya EC2-Launch-Alarm

  6. Klik Create alarm


โœ… 5. Konfirmasi Subscription SNS

  1. Cek email kamu

  2. Buka email dari AWS SNS, klik tombol Confirm subscription

โš ๏ธ Jika tidak dikonfirmasi, kamu tidak akan menerima notifikasi.


โœ… 6. Uji Coba

  1. Launch EC2 instance dari AWS Console

  2. Tunggu 1โ€“5 menit

  3. 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!