Menyalin resource dari akun AWS nyata ke LocalStack untuk regression testing yang realistis: SNS, RDS, VPC, dan IAM, lengkap dengan cross-Region discovery dan batch workflow.

Di episode 16 kita mengemulasi layanan lanjutan — ECS, EKS, Step Functions, sampai Athena. Tapi ada masalah klasik: data yang kita emulasi adalah data buatan. Untuk skenario yang menuntut realisme tinggi, misalnya menguji IaC yang bergantung pada VPC, IAM, atau resource lain yang sudah eksis di akun AWS, LocalStack Pro menyediakan AWS Replicator. Fitur ini menyalin resource dari akun AWS nyata ke LocalStack pada level API, sehingga nama dan ID resource tetap sama dengan aslinya.
Satu catatan penting sejak awal: AWS Replicator adalah fitur Pro, membutuhkan license atau auth token (LOCALSTACK_API_KEY), dan bekerja secara asinkron lewat job.
Prasyaratnya ada tiga: license Pro, kredensial AWS dengan akses read-only ke resource yang akan disalin, dan region yang benar. Kredensial bisa lewat profile atau environment variable:
export LOCALSTACK_API_KEY=ls_pro_placeholder
export AWS_PROFILE=readonly-sandbox
export AWS_DEFAULT_REGION=us-east-1
export AWS_ENDPOINT_URL=http://localhost:4566Best practice-nya jelas: jangan pernah memakai kredensial production. Gunakan role minimal dengan izin read-only untuk resource yang direplikasi.
Replicator bekerja dalam dua langkah: submit job, lalu cek status. Mulai dengan memastikan instance LocalStack berjalan:
localstack status
curl -s http://localhost:4566/_localstack/healthLalu submit job untuk satu VPC:
localstack replicator start \
--resource-identifier vpc-05208447cff1e3482 --resource-type AWS::EC2::VPCPerintah tersebut mengembalikan job_id. Pantau statusnya:
localstack replicator status 4bea1141-a822-4918-8a3d-c323938cc47eTunggu sampai state job selesai. Setelah itu, resource tersedia di LocalStack dengan ID yang sama persis seperti di AWS.
Replicator mendukung beberapa strategi tergantung jumlah resource dan dependensinya:
| Strategi | Kapan dipakai | Contoh |
|---|---|---|
| Single resource | Satu resource tertentu | Satu topic SNS |
| TREE | Resource plus dependensinya | VPC beserta subnet dan security group |
| BATCH | Banyak resource sejenis | Beberapa policy IAM sekaligus |
Untuk VPC, mode TREE ikut menyalin subnet dan security group-nya. Untuk IAM, dukungan rilis 2026.06.0 mencakup role TREE (role beserta policy terkait) dan policy BATCH. Kemampuan per strategi bisa dicek lewat endpoint metadata resource Replicator.
Contoh nyata: replikasi resource yang sering menjadi dependensi aplikasi. Topic SNS berikut atribut, tag, dan pengaturan FIFO-nya:
localstack replicator start \
--resource-identifier arn:aws:sns:us-east-1:123456789012:notifications \
--resource-type AWS::SNS::TopicInstance RDS:
localstack replicator start \
--resource-identifier db-PROD-01 --resource-type AWS::RDS::DBInstanceRole IAM (mode TREE ikut menarik policy terkait):
localstack replicator start \
--resource-identifier app-service-role --resource-type AWS::IAM::RoleDan subnet VPC — jalankan per resource, atau gunakan mode batch untuk beberapa subnet sekaligus:
localstack replicator start \
--resource-identifier subnet-09a7b4d46eb9caf3c \
--resource-type AWS::EC2::SubnetReplicator menemukan resource berdasarkan region yang dikonfigurasi lewat AWS_DEFAULT_REGION. Untuk resource di region lain, ganti region lalu submit job baru:
export AWS_DEFAULT_REGION=eu-central-1
localstack replicator start \
--resource-identifier vpc-0abc123def456 --resource-type AWS::EC2::VPCDengan cara ini, resource multi-region bisa ditarik ke satu instance lokal untuk pengujian terpusat.
Manfaat utama Replicator: regression testing dengan konfigurasi nyata. Bayangkan IaC yang mereferensikan VPC ID dan subnet ID milik stack tim lain. Tanpa Replicator, deploy lokal gagal karena resource tidak ada; dengan Replicator, deploy berjalan mulus karena ID-nya persis sama.
Pola yang umum dipakai tim adalah replicate-on-demand: deploy aplikasi di LocalStack, perhatikan error resource tidak ditemukan, replikasi resource yang dimaksud, lalu deploy ulang. Alur ini sebaiknya ditulis sebagai script atau Makefile agar bisa diulang kapan pun.
#!/usr/bin/env bash
set -euo pipefail
for res in "vpc-05208447cff1e3482 AWS::EC2::VPC" \
"subnet-09a7b4d46eb9caf3c AWS::EC2::Subnet" \
"sg-0f1e2d3c4b5a69788 AWS::EC2::SecurityGroup"; do
set -- $res
localstack replicator start --resource-identifier "$1" --resource-type "$2"
doneBeberapa catatan penting:
Ringkasan AWS Replicator:
localstack replicator start lalu localstack replicator status.Setelah environment lokal bisa meniru produksi, saatnya mengotomatisasi pengujiannya. Di episode 18 selanjutnya kita membahas CI/CD Integration: LocalStack sebagai service container di GitHub Actions, parallelism, caching image, dan integrasi dengan pytest, Jest, Mocha, serta testcontainers. Sampai jumpa!