Masdika Loading..
Masdika.ID

DevOps Engineer

Cloud Engineer

System Administrator

  • Home
  • Portfolio
  • Services
  • Resume
  • Skills
  • Blog
  • Contact
Masdika.ID

DevOps Engineer

Cloud Engineer

System Administrator

Download CV

Recent Posts

  • Deploy Website High-Availability di AWS dengan Terraform, Docker (Nginx) & Load Balancer (ALB + HTTPS/ACM)
  • Tutorial AWS Lengkap: Belajar EC2, S3, dan IAM dari Nol
  • Jangan Gunakan latest Tag pada Docker Images! Ini Alasannya
  • Panduan Lengkap Anti-DDoS: Installasi Iptables, Hardening, dan Cloudflare Proxy
  • Panduan Lengkap Install K3s di Ubuntu dan Konfigurasi Remote Kubectl dari Windows PC/Laptop

Recent Comments

  1. Alif on Jangan Gunakan latest Tag pada Docker Images! Ini Alasannya
  2. Sahrull on Panduan Lengkap Anti-DDoS: Installasi Iptables, Hardening, dan Cloudflare Proxy
  3. VSTRA on Cara Cerdas Menguasai Kubernetes (K8s): Panduan Lengkap Orkestrasi Kontainer untuk Developer Modern
  4. Rikiy on Cara Mudah Deploy Website Node.js Menggunakan Docker
  5. Masdika.BIZ.ID on Disaster Recovery Cluster (DRC) WordPress dengan MariaDB Galera dan Load Balancer Caddy

Categories

  • Tutorial

Masdika.ID

  • About
  • Terms & Conditions
  • Privacy Policy
BLOG POST

Tutorial AWS Lengkap: Belajar EC2, S3, dan IAM dari Nol

September 7, 2025 Tutorial by Masdika.ID
Tutorial AWS Lengkap: Belajar EC2, S3, dan IAM dari Nol

Belajar AWS paling efektif kalau langsung praktik. Pada panduan ini kamu akan membuat IAM User, menjalankan EC2 Instance, menyiapkan S3 Bucket, lalu menghubungkan EC2 ke S3 menggunakan IAM Role.

Setiap langkah ditulis detail sesuai urutan nyata yang sudah dijalankan: mulai dari IAM User β†’ EC2 β†’ S3 β†’ IAM Role β†’ Tes Upload. Disertai penjelasan menu yang dipilih, opsi yang diaktifkan, hingga hasil akhir yang diharapkan. πŸ”₯βœ…

🧱 Persyaratan

  • Akun AWS aktif (pakai Free Tier bila memungkinkan).
  • Pilih region terdekat (contoh yang kamu pakai: ap-southeast-2 – Sydney/Singapore) – bebas untuk region. 🌏

1) Buat IAM User untuk Login (bukan Root) πŸ”

Console path: IAM β†’ Users β†’ Create user

  1. User name: masdika-lab.
  2. Centang Provide user access to the AWS Management Console.
  3. User type: pilih I want to create an IAM user (bukan Identity Center).
  4. Console password: pilih Autogenerated password.
  5. Centang Users must create a new password at next sign‑in.
  6. Set permissions (Step 2):
    • Untuk lab, pilih Attach policies directly lalu centang:
      • AdministratorAccess βœ…
      • IAMUserChangePassword βœ…
  7. Review and create β†’ klik Create user.
  8. Simpan sign‑in URL, username, dan password sementara.
  9. Login ulang ke Console pakai masdika-lab lalu ganti password. (Aktifkan MFA setelahnya). πŸ”’

Outcome: Punya user non‑root untuk semua langkah selanjutnya.

2) Launch EC2 Ubuntu (Web Server) πŸ–₯️

Console path: EC2 β†’ Instances β†’ Launch instance

  1. Name: masdika-lab-ec2.
  2. AMI: Ubuntu Server 24.04 LTS (Free Tier eligible).
  3. Instance type: t2.micro βœ….
  4. Key pair: Create new key pair β†’ download masdika-lab.pem.
  5. Network settings:
    • Auto-assign public IP: Enable.
    • Security group (baru):
      • SSH (22) β†’ My IP βœ… (lebih aman dari Anywhere).
      • HTTP (80) β†’ Anywhere (0.0.0.0/0, ::/0) 🌍
      • (Opsional) HTTPS (443) β†’ Anywhere.
  6. Storage: default 8 GB (gp2/gp3) β†’ cukup.
  7. Klik Launch instance β†’ tunggu status Running + Status checks: 2/2 passed.

Ambil Public IPv4 dari detail instance.

SSH dari komputer:

chmod 400 masdika-lab.pem
ssh -i masdika-lab.pem ubuntu@<EC2_PUBLIC_IP>

Jika “Permission denied (publickey)”: cek key, aturan SG (SSH=My IP), dan chmod 400 sudah benar.

Install web server:

sudo apt update && sudo apt install -y nginx

Uji di browser: http://<EC2_PUBLIC_IP> β†’ tampil halaman default Nginx βœ…

3) Buat S3 Bucket untuk Static Website πŸͺ£

Console path: S3 β†’ Create bucket

  1. Bucket name: masdika-lab-bucket (harus unik global).
  2. Region: sama dengan EC2.
  3. Object ownership: ACLs disabled (recommended).
  4. Block Public Access: uncheck β€œBlock all public access” β†’ ketik confirm.
  5. Default encryption: pilih SSE‑S3 (default). (Bucket Key abaikan/Disable).
  6. (Opsional) Versioning: Disable untuk lab.
  7. Klik Create bucket.

Upload file (di dalam bucket): Upload β†’ Add files β†’ pilih index.html.

  • Storage class: Standard.
  • Server-side encryption (per object): Don’t specify (cukup SSE‑S3 default bucket).
  • Klik Upload.

Aktifkan Static Website Hosting:

  • Properties β†’ Static website hosting β†’ Enable
  • Index document: index.html.
  • Catat Website endpoint contoh: http://masdika-lab-bucket.s3-website-ap-southeast-2.amazonaws.com

Jadikan objek bisa dibaca publik (Bucket Policy): Permissions β†’ Bucket policy β†’ tempel JSON:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "PublicReadGetObject",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::masdika-lab-bucket/*"
    }
  ]
}

Uji: buka Website endpoint β†’ halaman index.html tampil βœ…

Kalau 403 AccessDenied: biasanya lupa uncheck Block public access atau policy belum disimpan.

4) Buat IAM Role agar EC2 Bisa Akses S3 (Tanpa Access Key) 🎫

Console path: IAM β†’ Roles β†’ Create role

  1. Trusted entity type: AWS service.
  2. Use case: EC2 β†’ Next.
  3. Add permissions: centang AmazonS3FullAccess (untuk lab β†’ mudah dites).
  4. Role name: EC2S3Role β†’ Create role.

Pasang role ke instance:

  • EC2 β†’ Instances β†’ pilih instance β†’ Actions β†’ Security β†’ Modify IAM role β†’ pilih EC2S3Role β†’ Update.
  • Cek tab Security β†’ kolom IAM Role sudah terisi EC2S3Role.

Tes dari EC2 (CLI):

# kalau belum ada CLI
sudo apt update && sudo apt install -y awscli

# tampilkan daftar bucket
aws s3 ls

# kirim file uji ke S3
cd ~
echo "Hello from EC2 πŸš€" > test.html
aws s3 cp test.html s3://masdika-lab-bucket/

Uji di browser: http://<endpoint-website>/test.html β†’ tampil teks Hello from EC2 πŸš€ βœ…

5) (Opsional) Ganti ke Policy Minimal (Bucket-Scope) 🧰

Agar lebih aman daripada AmazonS3FullAccess, buat policy khusus bucket ini saja.

Policy JSON (minimal akses):

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:ListBucket"],
      "Resource": "arn:aws:s3:::masdika-lab-bucket"
    },
    {
      "Effect": "Allow",
      "Action": ["s3:GetObject", "s3:PutObject", "s3:DeleteObject"],
      "Resource": "arn:aws:s3:::masdika-lab-bucket/*"
    }
  ]
}

Langkah: IAM β†’ Policies β†’ Create policy β†’ JSON β†’ Paste β†’ Name: EC2S3BucketOnly β†’ Create β†’ attach policy ini ke EC2S3Role, lalu hapus AmazonS3FullAccess dari role.

βœ… Ringkasan Hasil

  • IAM User masdika-lab untuk login aman (bukan root) πŸ”
  • EC2 Ubuntu (t2.micro) + Nginx berjalan 🌐
  • S3 Static Website aktif dengan bucket policy πŸ“„
  • IAM Role EC2S3Role sukses β†’ EC2 upload ke S3 tanpa access key πŸ”—

🧹 Cleanup (biar hemat biaya) πŸ’Έ

  1. Terminate instance EC2 kalau sudah selesai.
  2. Empty & Delete bucket S3 (hapus objek dulu baru bucket‑nya).
  3. Hapus IAM Role/Policy yang tidak dipakai.
  4. (Opsional) Hapus Security Group dan Key Pair kalau memang khusus lab ini.

πŸ’‘ Troubleshooting Cepat

  • 403 AccessDenied di S3 β†’ Block Public Access masih ON atau policy belum benar.
  • 404 di S3 website β†’ nama file bukan index.html atau salah path.
  • SSH gagal β†’ Security Group SSH bukan My IP, atau chmod 400 belum dijalankan.
  • aws command not found β†’ instal awscli dulu.
  • Tidak menemukan β€œModify IAM role” β†’ pastikan pilih menu Actions β†’ Security pada instance yang benar.

Selamat! πŸŽ‰ Kamu sudah menyelesaikan lab dasar AWS mencakup Compute, Storage, dan IAM. Lanjutannya kamu bisa tambah CloudFront (CDN + HTTPS), RDS untuk database, atau CodePipeline untuk CI/CD. πŸš€

Share:
Tags: awsec2iams3
Related Posts
Deploy Website High-Availability di AWS dengan Terraform, Docker (Nginx) & Load Balancer (ALB + HTTPS/ACM)

Lab ini disusun dengan pendekatan praktis step-by-step, sehingga bahkan pemula bisa langsung mengikuti tanpa bingung. Kita mulai dari menyiapkan akun AWS…

Panduan Lengkap Cara Membuat Instance EC2 di AWS

Amazon EC2 (Elastic Compute Cloud) adalah layanan cloud dari AWS (Amazon Web Services) yang memungkinkan kamu untuk membuat dan menjalankan…

Post navigation

Prev
Next
Write a comment Cancel Reply

Β© 2025 www.masdika.id β€” Semua hak cipta dilindungi