Komputasi, streaming, database, dan analitik: ECS, EKS dengan Karpenter, Step Functions HTTP Tasks, Kinesis, MSK, OpenSearch, RDS PostgreSQL dan Aurora DSQL, Redshift, serta Athena.

Di episode 15 kita menyusun aturan keamanan: data sintetis, isolasi workspace, dan pengelolaan PERSISTENCE yang sadar. Sekarang saatnya keluar dari zona nyaman S3, DynamoDB, dan Lambda. LocalStack tidak berhenti di core services — ia mengemulasi layanan komputasi, streaming, database, dan analitik. Episode ini menelusuri Advanced Services yang paling sering dipakai di dunia nyata: ECS, EKS, Step Functions, Kinesis, MSK, OpenSearch, RDS, Redshift, dan Athena.
Satu hal yang perlu diingat sejak awal: kedalaman emulasi tiap layanan berbeda. Ada yang berfungsi penuh secara fungsional, ada yang sekadar mock API. Selalu cek dokumentasi service-nya sebelum bergantung pada fitur tertentu.
ECS mengemulasi cluster, task definition, dan service. Menariknya, LocalStack menjalankan task secara nyata sebagai container Docker. Alur dasarnya: buat cluster, daftarkan task definition, lalu jalankan sekali lewat run-task atau terus-menerus lewat service.
awslocal ecs create-cluster --cluster-name dev-cluster
awslocal ecs register-task-definition \
--family worker \
--network-mode awsvpc \
--container-definitions '[
{"name": "worker", "image": "alpine", "command": ["echo", "hello-ecs"]}
]'
awslocal ecs run-task --cluster dev-cluster --task-definition workerPerhatikan: image dari task definition benar-benar di-pull dan dijalankan oleh Docker. Ini bagus untuk menguji integrasi antar container, tapi membutuhkan Docker daemon yang aktif di host.
Untuk workload yang harus terus berjalan, gunakan service dengan desired count:
awslocal ecs create-service \
--cluster dev-cluster --service-name worker-svc \
--task-definition worker --desired-count 1Untuk Kubernetes, LocalStack menyediakan emulasi kontrol plane EKS. Kita bisa membuat cluster dan nodegroup tanpa perlu cluster Kubernetes sungguhan:
awslocal eks create-cluster --name dev-eks \
--role-arn arn:aws:iam::000000000000:role/eks-role \
--resources-vpc-config '{"subnetIds": ["subnet-1"]}'
awslocal eks create-nodegroup --cluster-name dev-eks \
--nodegroup-name nodes --instance-types t3.small \
--node-role arn:aws:iam::000000000000:role/eks-node-roleSejak rilis 2026.07.0, LocalStack mendukung pod identity dan node join berbasis Karpenter — cocok untuk menguji alur provisioning node dan pod identity tanpa menyentuh cluster Kubernetes produksi.
Step Functions mengemulasi state machine: Pass, Choice, Wait, Map, dan Task. Fitur menarik di rilis terbaru adalah HTTP Tasks via resource arn:aws:states:::http:invoke — state machine bisa memanggil API eksternal (termasuk di localhost) lewat EventBridge Connections. Contoh definisi yang memanggil service HTTP lokal:
{
"StartAt": "PanggilAPI",
"States": {
"PanggilAPI": {
"Type": "Task",
"Resource": "arn:aws:states:::http:invoke",
"Parameters": {
"ApiEndpoint": "http://host.docker.internal:5000/orders",
"Method": "POST",
"RequestBody": {"orderId.$": "$.orderId"}
},
"End": true
}
}
}Deploy dan eksekusi:
awslocal stepfunctions create-state-machine \
--name order-flow --definition file://state-machine.json \
--role-arn arn:aws:iam::000000000000:role/sfn-role
awslocal stepfunctions start-execution \
--state-machine-arn arn:aws:states:us-east-1:000000000000:stateMachine:order-flow \
--input '{"orderId": "O-1001"}'Kinesis Data Streams diemulasi dengan shard dan record. Alur dasarnya:
awslocal kinesis create-stream --stream-name events --shard-count 1
awslocal kinesis put-record --stream-name events \
--partition-key p1 --data aGVsbG8td29ybGQ=
awslocal kinesis describe-stream --stream-name eventsSifat Kinesis — shard, sequence number, shard iterator — dipertahankan, sehingga pola konsumen seperti KCL bisa diuji secara lokal.
Managed Streaming for Apache Kafka diemulasi dengan memakai broker Kafka yang berjalan di dalam instance. Buat cluster lalu bekerja dengan topic:
awslocal kafka create-cluster-v2 \
--cluster-name dev-msk --cluster-type PROVISIONED
awslocal kafka list-clusters-v2Untuk interaksi level Kafka (produce/consume), bisa langsung memakai kafka-console-producer atau SDK yang diarahkan ke broker lokal.
LocalStack mengemulasi domain OpenSearch pada versi 3.3 dan 3.5. Kita bisa membuat domain lalu melakukan CRUD index:
awslocal opensearch create-domain \
--domain-name logs --engine-version OpenSearch_3.3
awslocal opensearch list-domain-namesSetelah domain siap, index bisa dibuat lewat REST API atau SDK. Ini berguna untuk menguji pipeline pencarian sebelum produksi.
RDS PostgreSQL diemulasi — bahkan LocalStack dapat men-spin database PostgreSQL sungguhan di dalam container:
awslocal rds create-db-instance \
--db-instance-identifier dev-pg \
--engine postgres --db-instance-class db.t3.micro \
--master-username postgres --master-user-password password
awslocal rds describe-db-instancesSedangkan Aurora DSQL, serverless database PostgreSQL-compatible, mendapat dukungan CRUD dan SQL dialect sejak rilis 2026.07.0. Cocok untuk menguji pola aplikasi yang menargetkan Aurora DSQL tanpa menyentuh cloud.
Redshift diemulasi pada level cluster dan sebagian data plane:
awslocal redshift create-cluster \
--cluster-identifier dev-rs --node-type dc2.large \
--number-of-nodes 1
awslocal redshift describe-clustersBiasanya cukup untuk menguji pemanggilan SDK dan alur provisioning — bukan untuk menjalankan query OLAP yang berat.
Athena diemulasi untuk membuat workgroup dan menjalankan query sederhana. Dengan federated catalog, Athena lokal bisa membaca katalog data eksternal — misalnya memetakan data di S3 lokal ke skema tabel:
awslocal athena create-work-group --name dev-wg \
--configuration '{"ResultConfiguration": {"OutputLocation": "s3://results/"}}'
awslocal athena start-query-execution \
--work-group dev-wg --query-string "SELECT * FROM sales LIMIT 10"Ringkasan layanan lanjutan LocalStack:
arn:aws:states:::http:invoke untuk memanggil API dari state machine.Semua layanan ini menguji kode kalian, bukan infrastruktur sungguhan. Di episode 17 selanjutnya kita membahas AWS Replicator — fitur Pro yang menarik resource dari akun AWS nyata ke LocalStack untuk testing yang jauh lebih realistis. Sampai jumpa!