Skip to main content

New Page

Di Terraform saya membuat modul terpisah untuk pembuatan IAM untuk S3, agar s3 dapat diakses oleh EC2 dan berikut adalah script untuk iam.tf nya

# IAM Role for EC2
resource "aws_iam_role" "ec2_cloudwatch_role" {
  name = "EC2CloudWatchRole"

  assume_role_policy = jsonencode({
    Version = "2012-10-17",
    Statement = [{
      Effect = "Allow",
      Principal = {
        Service = "ec2.amazonaws.com"
      },
      Action = "sts:AssumeRole"
    }]
  })
}

# Data: AWS managed policy for CloudWatch agent
data "aws_iam_policy" "cloudwatch_agent" {
  arn = "arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy"
}

# Attach CloudWatchAgent policy to the role
resource "aws_iam_role_policy_attachment" "attach_cloudwatch_policy" {
  role       = aws_iam_role.ec2_cloudwatch_role.name
  policy_arn = data.aws_iam_policy.cloudwatch_agent.arn
}

resource "aws_iam_role_policy" "ec2_s3_access_policy" {
  name = "EC2S3AccessPolicy"
  role = aws_iam_role.ec2_cloudwatch_role.id

  policy = jsonencode({
    Version = "2012-10-17",
    Statement = [
      {
        Effect = "Allow",
        Action = "s3:ListBucket",
        Resource = aws_s3_bucket.app_bucket.arn
      },
      {
        Effect = "Allow",
        Action = [
          "s3:GetObject",
          "s3:PutObject",
          "s3:DeleteObject"
        ],
        Resource = "${aws_s3_bucket.app_bucket.arn}/*"
      }
    ]
  })
}

resource "aws_iam_instance_profile" "ec2_instance_profile" {
  name = "EC2InstanceProfile"
  role = aws_iam_role.ec2_cloudwatch_role.name
}

Β agar lebih mudah memahami konsep IAM Role, Policy, dan Instance Profile dalam konteks Terraform dan AWS kita gunakan analogi dunia nyata


πŸŽ“ Analogi: Perusahaan + Karyawan + Gedung + Akses

Bayangkan kamu punya sebuah perusahaan (AWS) yang terdiri dari:

  • πŸ” Gedung S3: Tempat penyimpanan data seperti dokumen, foto, dll

  • πŸ“ˆ Ruang CloudWatch: Tempat memantau CCTV dan suhu ruangan

  • πŸ‘¨β€πŸ’» Karyawan EC2: Mesin yang bekerja, misalnya mengakses file, mengupload data, atau kirim laporan ke monitoring

Sekarang, mari kita cocokkan bagian-bagiannya:


🧩 Bagian-bagian IAM dan Terraform = Analogi

Konsep Terraform / AWS Analogi Dunia Nyata
aws_instance (EC2) Karyawan
aws_iam_role ID Card (Kartu Akses) β€” menyatakan siapa kamu dan peranmu
aws_iam_role_policy Hak Akses tertulis di kartu (bisa akses ruang A, B, atau C)
aws_iam_policy_attachment Menempelkan akses standar (misal: akses ke ruang monitoring bagi semua teknisi)
aws_iam_instance_profile Tempat menaruh kartu ID agar bisa dibaca oleh sistem saat karyawan masuk gedung
assume_role_policy Aturan siapa yang boleh memakai kartu ini (hanya karyawan EC2, bukan orang luar)
aws_s3_bucket Gedung penyimpanan (S3 Bucket)
cloudwatch_agent_policy Akses untuk karyawan yang bertugas memonitor CCTV dan suhu (CloudWatch)

πŸ“¦ Contoh Kasus: EC2 Butuh Akses ke S3 dan CloudWatch

Tanpa Role:

  • EC2 seperti karyawan tanpa kartu akses β†’ dia tidak bisa masuk ke ruang penyimpanan (S3) atau monitoring (CloudWatch)

Dengan Role + Policy:

  • Kamu buat kartu akses khusus (IAM Role), lalu

  • Tempelkan hak akses (policy: bisa buka pintu S3 dan CloudWatch),

  • Berikan kartu itu ke karyawan (EC2) lewat instance_profile


πŸ” Apa yang dilakukan Terraform?

Saat kamu menjalankan terraform apply, kamu seperti:

  1. Mendaftarkan gedung dan ruang (S3, CloudWatch)

  2. Membuat ID Card dan tempelkan hak akses (IAM Role + Policy)

  3. Memberikan kartu itu ke karyawan (EC2 via Instance Profile)

  4. Semua berjalan otomatis dan terhubung


Kalau kamu membagi ke file iam.tf, s3.tf, dan ec2.tf, itu seperti:

  • Menaruh dokumen gedung, dokumen karyawan, dan dokumen izin akses ke map terpisah β€” tapi semuanya tetap satu proyek perusahaan.


βœ… Kesimpulan

IAM Role itu seperti kartu akses yang perlu izin tertulis (policy), dan harus diberikan ke EC2 (via instance profile) agar EC2 bisa masuk ke gedung (akses S3) atau ruang monitoring (CloudWatch).

Kalau kamu sudah paham analogi ini, kamu akan lebih mudah memahami seluruh flow IAM di AWS.


Kalau kamu mau, saya bisa bantu gambar diagram alurnya juga. Mau?