Belajar LocalStack - AWS Replicator
Episode 17 of 23

Belajar LocalStack - AWS Replicator

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.

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

Pendahuluan

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.

Menyiapkan Environment

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:

Siapkan kredensial replicator
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:4566

Best practice-nya jelas: jangan pernah memakai kredensial production. Gunakan role minimal dengan izin read-only untuk resource yang direplikasi.

Alur Kerja Replication Job

Replicator bekerja dalam dua langkah: submit job, lalu cek status. Mulai dengan memastikan instance LocalStack berjalan:

Cek status LocalStack
localstack status
curl -s http://localhost:4566/_localstack/health

Lalu submit job untuk satu VPC:

Replikasi VPC dari AWS
localstack replicator start \
  --resource-identifier vpc-05208447cff1e3482 --resource-type AWS::EC2::VPC

Perintah tersebut mengembalikan job_id. Pantau statusnya:

Cek status job
localstack replicator status 4bea1141-a822-4918-8a3d-c323938cc47e

Tunggu sampai state job selesai. Setelah itu, resource tersedia di LocalStack dengan ID yang sama persis seperti di AWS.

Strategi Replikasi: TREE, BATCH, dan Resource Tunggal

Replicator mendukung beberapa strategi tergantung jumlah resource dan dependensinya:

StrategiKapan dipakaiContoh
Single resourceSatu resource tertentuSatu topic SNS
TREEResource plus dependensinyaVPC beserta subnet dan security group
BATCHBanyak resource sejenisBeberapa 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.

Mereplikasi SNS, RDS, VPC, dan IAM

Contoh nyata: replikasi resource yang sering menjadi dependensi aplikasi. Topic SNS berikut atribut, tag, dan pengaturan FIFO-nya:

Replikasi SNS topic
localstack replicator start \
  --resource-identifier arn:aws:sns:us-east-1:123456789012:notifications \
  --resource-type AWS::SNS::Topic

Instance RDS:

Replikasi RDS instance
localstack replicator start \
  --resource-identifier db-PROD-01 --resource-type AWS::RDS::DBInstance

Role IAM (mode TREE ikut menarik policy terkait):

Replikasi IAM role
localstack replicator start \
  --resource-identifier app-service-role --resource-type AWS::IAM::Role

Dan subnet VPC — jalankan per resource, atau gunakan mode batch untuk beberapa subnet sekaligus:

Replikasi subnet
localstack replicator start \
  --resource-identifier subnet-09a7b4d46eb9caf3c \
  --resource-type AWS::EC2::Subnet

Cross-Region Discovery

Replicator menemukan resource berdasarkan region yang dikonfigurasi lewat AWS_DEFAULT_REGION. Untuk resource di region lain, ganti region lalu submit job baru:

Replikasi dari region lain
export AWS_DEFAULT_REGION=eu-central-1
localstack replicator start \
  --resource-identifier vpc-0abc123def456 --resource-type AWS::EC2::VPC

Dengan cara ini, resource multi-region bisa ditarik ke satu instance lokal untuk pengujian terpusat.

Regression Testing dengan Data Nyata

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.

Workflow batch replication
#!/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"
done

Keterbatasan yang Harus Diketahui

Beberapa catatan penting:

  • Replicator menyalin metadata dan konfigurasi resource pada level API — bukan data di dalamnya seperti isi database atau object S3.
  • Membutuhkan kredensial AWS dengan izin read; jangan pernah memakai kredensial production.
  • Coverage resource bergantung versi — cek dokumentasi dan changelog untuk daftar terbaru.
  • Proses berjalan asinkron, jadi selalu pantau status job sebelum mengandalkan hasilnya.

Penutup

Ringkasan AWS Replicator:

  • Fitur Pro untuk menyalin resource AWS nyata ke LocalStack pada level API, dengan ID yang sama persis.
  • Alur dua langkah: localstack replicator start lalu localstack replicator status.
  • Strategi single, TREE, dan BATCH menyesuaikan dependensi resource.
  • Sempurna untuk regression testing IaC yang bergantung pada resource bersama, termasuk cross-Region.

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!