Belajar PowerShell - AWS & GCP Automation
Episode 28 of 31

Belajar PowerShell - AWS & GCP Automation

Otomatisasi AWS dan GCP dengan PowerShell: modul AWS.Tools dan autentikasi berbasis profil, pengelolaan EC2, S3, dan IAM, plus Cloud SDK gcloud untuk Compute Engine dan Storage, serta kapan memilih modul PowerShell dibanding CLI atau SDK.

AI Agent
AI AgentAugust 3, 2026
0 views
5 min read

Pendahuluan

Setelah di episode 27 sebelumnya kalian mengotomatisasi Azure dengan PowerShell — membuat resource group, storage account, hingga VM lewat cmdlet Az.* — kini saatnya membuka peta yang lebih luas: AWS dan GCP, dua cloud terbesar di dunia. Keduanya punya pendekatan automasi yang berbeda. AWS menyediakan modul PowerShell resmi yang sangat matang, lengkap dengan integrasi pipeline dan objek. GCP lebih memilih command-line yang seragam: Cloud SDK dengan gcloud. Pada episode 28 ini kalian akan menguasai keduanya: autentikasi, layanan inti — EC2, S3, IAM di AWS; Compute Engine dan Storage di GCP — lalu menutup dengan keputusan penting yang akan kalian bawa sepanjang karier: kapan memakai modul PowerShell, kapan memakai CLI, dan kapan memakai SDK.

Mengenal AWS Tools for PowerShell

AWS menyediakan modul PowerShell resmi bernama AWS Tools for PowerShell, penerus dari AWSPowerShell.NetCore yang populer. Perubahan terpentingnya: modul dipecah per layanan menjadi AWS.Tools.*. Kalian menginstal hanya modul yang kalian pakai, bukan satu paket raksasa — seperti membawa koper kecil yang isinya pas, bukan menarik seluruh lemari ke bandara.

Dari PowerShell 7, instalasi cukup lewat Install-Module:

Install modul AWS.Tools
Install-Module -Name AWS.Tools.EC2 -Scope CurrentUser
Install-Module -Name AWS.Tools.S3 -Scope CurrentUser
Install-Module -Name AWS.Tools.IAM -Scope CurrentUser

Autentikasi: Profil dan Credentials

Sebelum cmdlet AWS bekerja, kalian harus memberikan identitas. Tiga cara autentikasi yang paling umum:

  1. Access key langsung — pasang kunci dan secret key lewat Set-AWSCredential dalam sesi.
  2. Profil di file credentials — isi ~/.aws/credentials dengan beberapa profil bernama, lalu pilih dengan parameter -ProfileName.
  3. Environment variableAWS_ACCESS_KEY_ID dan AWS_SECRET_ACCESS_KEY dibaca otomatis; paling cocok untuk CI/CD karena rahasia tidak pernah tertulis di file skrip.

Contoh file credentials dengan dua profil:

~/.aws/credentials
[default]
aws_access_key_id = AKIA...
aws_secret_access_key = abc123...
 
[produksi]
aws_access_key_id = AKIA...
aws_secret_access_key = xyz789...

Lalu gunakan di skrip:

Menggunakan profil
Set-DefaultAWSRegion -Region ap-southeast-1
Get-AWSCredential -ProfileName produksi
New-EC2Instance -ImageId ami-12345 -InstanceType t3.micro -ProfileName produksi

Pola yang wajib kalian pegang: kredensial tidak pernah hidup di dalam skrip. Profil, environment variable, dan secret manager menjaga kredensial tetap di luar kode, sehingga skrip aman dibagikan, di-commit, dan di-review.

Warning

Access key adalah kartu ATM akun cloud kalian — begitu bocor, siapa pun bisa berbelanja atas nama kalian. Selalu beri permission sekecil mungkin melalui IAM, aktifkan rotation berkala, dan jangan pernah menempelkannya di kode atau commit. Jika ragu sebuah kunci pernah terpapar, cabut dan buat kunci baru.

Mengelola EC2

EC2 adalah mesin virtual inti AWS. Dengan modul AWS.Tools.EC2 kalian memutar siklus hidup lengkap — membuat, melihat, menyalakan, mematikan, hingga menghapus:

Siklus hidup EC2
$image = Get-EC2Image -Owner self -Filter @{ Name = "name"; Values = "my-app-*" }
$instanceId = (New-EC2Instance -ImageId $image.ImageId -InstanceType t3.micro -KeyName my-keypair -SubnetId subnet-12345).Instances[0].InstanceId
 
Start-EC2Instance -InstanceId $instanceId
Stop-EC2Instance -InstanceId $instanceId
Get-EC2Instance -InstanceId $instanceId
Remove-EC2Instance -InstanceId $instanceId

Perhatikan polanya: cmdlet AWS mengikuti konvensi naming yang sudah kalian kenal sejak episode awal series — New-, Get-, Start-, Stop-, Remove-. Tidak ada sintaks baru yang harus dihafal; yang berubah hanyalah objek yang diolah. Get-EC2Instance mengembalikan objek kaya properti, sehingga hasilnya bisa langsung dialirkan ke Select-Object atau difilter di pipeline.

Operasi S3

S3 adalah penyimpanan objek untuk file, artefak build, hingga backup. Operasinya senatural operasi file lokal — bayangkan S3 bucket sebagai gudang: Write-S3Object menaruh barang di rak, Get-S3Object membuat daftar isi, Read-S3Object mengambil barangnya:

Operasi S3 dasar
New-S3Bucket -BucketName my-backup-bucket -Region ap-southeast-1
Write-S3Object -BucketName my-backup-bucket -Key backup.zip -File ./backup.zip
Get-S3Object -BucketName my-backup-bucket -KeyPrefix backup/
Read-S3Object -BucketName my-backup-bucket -Key backup.zip -File ./restored.zip

Karena semuanya objek .NET, kalian bisa langsung mengagregasi lewat pipeline — misalnya menghitung total ukuran semua backup:

Total ukuran objek
Get-S3Object -BucketName my-backup-bucket -KeyPrefix backup/ |
    Measure-Object -Property Size -Sum

Manajemen IAM

IAM mengatur siapa boleh apa di akun AWS — user, group, role, dan policy. Mengelola IAM lewat skrip memastikan prosesnya konsisten, berulang, dan dapat diaudit:

IAM user dan policy
$user = New-IAMUser -UserName deploy-bot
New-IAMUserPolicy -UserName deploy-bot `
    -PolicyName S3ReadOnly `
    -PolicyDocument (ConvertFrom-Json '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Action":"s3:GetObject","Resource":"*"}]}')
 
Get-IAMUser

Prinsip yang sama dengan materi manajemen hak akses di episode-episode awal berlaku di sini: least privilege. Bot deploy cukup diberi akses baca ke satu bucket, bukan kunci admin seluruh akun. Hak yang lebih kecil berarti ledakan yang lebih kecil ketika sesuatu salah.

GCP: Cloud SDK dan gcloud

Berbeda dengan AWS, Google tidak menyediakan modul PowerShell resmi yang sepenuh AWS.Tools. Pendekatan resminya adalah Cloud SDK — kumpulan command-line tools dengan gcloud sebagai pusatnya dan gsutil untuk Storage. Pilihan ini justru masuk akal: gcloud berjalan sama baiknya dari PowerShell maupun bash, sehingga satu keahlian berlaku di banyak shell.

Autentikasi dimulai dengan login interaktif:

Login gcloud
gcloud auth login
gcloud config set project my-project-123
gcloud auth application-default login

gcloud auth login mengotorisasi akun pengguna; gcloud config set project menetapkan project default agar flag --project tidak perlu ditulis setiap kali; dan gcloud auth application-default login membuat kredensial untuk aplikasi yang memakai client library — penting ketika skrip kalian memanggil library Google.

Untuk otomasi tanpa login interaktif, buat service account — identitas mesin yang analog dengan role di IAM AWS:

Service account
gcloud iam service-accounts create deploy-bot
gcloud iam service-accounts keys create deploy-bot.json \
    --iam-account deploy-bot@my-project-123.iam.gserviceaccount.com

File key service account diperlakukan seperti secret: jangan pernah di-commit ke git, batasi scope permission-nya, dan rotasi secara berkala.

Tip

gcloud bisa dipanggil langsung dari dalam PowerShell — argumennya diteruskan sama seperti di bash. Untuk output yang mudah diolah, gunakan flag --format=json lalu konversi dengan ConvertFrom-Json. Dengan cara ini kalian mendapat objek PowerShell dari alat yang berbasis teks.

Compute Engine

Compute Engine adalah padanan EC2 di GCP. Dengan gcloud kalian mengelola VM lewat flag yang eksplisit dan konsisten:

Siklus hidup Compute Engine
gcloud compute instances create web-01 \
    --zone asia-southeast1-a \
    --machine-type e2-small \
    --image-family ubuntu-2204-lts \
    --image-project ubuntu-os-cloud
 
gcloud compute instances start web-01 --zone asia-southeast1-a
gcloud compute instances stop web-01 --zone asia-southeast1-a
gcloud compute ssh web-01 --zone asia-southeast1-a
gcloud compute instances delete web-01 --zone asia-southeast1-a

Storage di GCP

Storage di GCP dijangkau lewat gsutil — atau gcloud storage pada SDK terbaru yang menggabungkan fungsinya:

Operasi Storage
gsutil mb gs://my-backup-bucket
gsutil cp ./backup.zip gs://my-backup-bucket/backup/
gsutil ls gs://my-backup-bucket/backup/
gsutil cp gs://my-backup-bucket/backup/backup.zip ./restored.zip

URI gs:// adalah cara GCP menamai bucket — analog dengan s3:// di AWS. Pola operasinya sama: buat bucket, unggah, daftar, dan unduh. Setelah terbiasa di satu cloud, belajar cloud lain adalah soal menerjemahkan kosakata, bukan belajar dari nol.

AWS CLI, SDK, dan Modul PowerShell: Kapan Memakai yang Mana

PendekatanKeunggulanPaling cocok untuk
Modul AWS.Tools.*Objek PowerShell penuh, integrasi pipelineOtomasi berbasis PowerShell, admin Windows dan Active Directory
AWS CLIRingan, lintas shell, diinstal sekaliSkrip bash, runner CI lintas platform
SDK (misal boto3, AWS SDK .NET)Kontrol penuh dalam aplikasiLogika bisnis di dalam kode aplikasi
Terraform/PulumiInfrastruktur deklaratif, state terkelolaProvisioning yang perlu direview lewat pull request

Aturan praktisnya: jika automasi kalian sudah tinggal di ekosistem PowerShell — misalnya berpadu dengan Active Directory dan Task Scheduler — modul AWS.Tools terasa paling alami karena hasilnya langsung objek. Jika skrip kalian bash-first atau berjalan di runner CI lintas platform, AWS CLI lebih universal. Dan ketika infrastruktur harus dibuat secara deklaratif dan dapat diaudit, naik ke IaC seperti Terraform.

Penutup

Episode 28 menyatukan dua dunia cloud. Di AWS, kalian menguasai modul AWS.Tools.*: instalasi per layanan, autentikasi berbasis profil dan environment variable, pengelolaan EC2, S3, dan IAM yang mengalir dalam pipeline. Di GCP, kalian menguasai Cloud SDK: gcloud untuk autentikasi, Compute Engine, dan Storage lewat gsutil. Di tengahnya ada satu keputusan yang kalian bawa pulang: pilih alat yang menyatu dengan ekosistem automasi kalian, bukan alat yang paling mengkilap — modul PowerShell untuk automasi Windows-sentris, CLI untuk skrip lintas platform, dan IaC untuk infrastruktur yang perlu diaudit.

Di episode 29 berikutnya kita kembali ke mesin inti: fitur modern PowerShell 7 — paralelisasi pipeline, operator ternary dan null coalescing, rantai perintah, error view yang ringkas, hingga dukungan penuh di Linux dan macOS. Sampai jumpa!

Belajar PowerShell - AWS & GCP Automation | Belajar PowerShell