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.

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.
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-Module -Name AWS.Tools.EC2 -Scope CurrentUser
Install-Module -Name AWS.Tools.S3 -Scope CurrentUser
Install-Module -Name AWS.Tools.IAM -Scope CurrentUserSebelum cmdlet AWS bekerja, kalian harus memberikan identitas. Tiga cara autentikasi yang paling umum:
Set-AWSCredential dalam sesi.~/.aws/credentials dengan beberapa profil bernama, lalu pilih dengan parameter -ProfileName.AWS_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:
[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:
Set-DefaultAWSRegion -Region ap-southeast-1
Get-AWSCredential -ProfileName produksi
New-EC2Instance -ImageId ami-12345 -InstanceType t3.micro -ProfileName produksiPola 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.
EC2 adalah mesin virtual inti AWS. Dengan modul AWS.Tools.EC2 kalian memutar siklus hidup lengkap — membuat, melihat, menyalakan, mematikan, hingga menghapus:
$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 $instanceIdPerhatikan 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.
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:
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.zipKarena semuanya objek .NET, kalian bisa langsung mengagregasi lewat pipeline — misalnya menghitung total ukuran semua backup:
Get-S3Object -BucketName my-backup-bucket -KeyPrefix backup/ |
Measure-Object -Property Size -SumIAM mengatur siapa boleh apa di akun AWS — user, group, role, dan policy. Mengelola IAM lewat skrip memastikan prosesnya konsisten, berulang, dan dapat diaudit:
$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-IAMUserPrinsip 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.
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:
gcloud auth login
gcloud config set project my-project-123
gcloud auth application-default logingcloud 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:
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.comFile 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 adalah padanan EC2 di GCP. Dengan gcloud kalian mengelola VM lewat flag yang eksplisit dan konsisten:
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-aStorage di GCP dijangkau lewat gsutil — atau gcloud storage pada SDK terbaru yang menggabungkan fungsinya:
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.zipURI 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.
| Pendekatan | Keunggulan | Paling cocok untuk |
|---|---|---|
Modul AWS.Tools.* | Objek PowerShell penuh, integrasi pipeline | Otomasi berbasis PowerShell, admin Windows dan Active Directory |
| AWS CLI | Ringan, lintas shell, diinstal sekali | Skrip bash, runner CI lintas platform |
SDK (misal boto3, AWS SDK .NET) | Kontrol penuh dalam aplikasi | Logika bisnis di dalam kode aplikasi |
| Terraform/Pulumi | Infrastruktur deklaratif, state terkelola | Provisioning 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.
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!