Diagnostik LocalStack: log dengan DEBUG=1 dan localstack logs, health endpoint, monitoring resource Docker, serta cara mengatasi port conflict dan persistence yang hilang.

Di episode 18 kita men-deploy LocalStack ke CI dan pipeline berjalan otomatis. Tapi ketika sesuatu macet — Lambda tidak ter-invoke, port bertabrakan, state hilang — keterampilan debugginglah yang menentukan. Episode ini menutup Fase 5 dengan Performance & Troubleshooting: cara membaca log, memeriksa health, memantau resource, dan memecahkan masalah paling umum. Ini bukan teori — ini checklist yang akan kalian pakai hampir setiap hari.
Secara default, log LocalStack cukup tenang. Untuk investigasi, aktifkan mode debug saat start:
DEBUG=1 localstack startAtau lewat variabel environment pada container:
docker run -d --name ls-debug -e DEBUG=1 -p 4566:4566 localstack/localstack:stableLihat log dengan:
localstack logs
docker logs -f ls-debugDengan DEBUG=1, setiap request tercatat lengkap beserta status dan trace-nya. Matikan saat tidak dibutuhkan — mode debug menghasilkan log yang sangat banyak dan sedikit memperlambat instance.
Cara tercepat memastikan layanan hidup adalah endpoint health:
curl -s http://localhost:4566/_localstack/healthResponsnya berupa JSON berisi status tiap service:
{
"services": {
"s3": "running",
"dynamodb": "running",
"lambda": "available",
"iam": "available"
}
}Status running berarti service aktif; available berarti siap diaktifkan saat pertama dipanggil; sedangkan error atau stopped menandakan masalah. Endpoint ini sangat berguna sebagai readiness check di CI maupun orchestrator — kita memakainya juga di episode 18.
LocalStack berjalan di atas container, jadi alat monitoring utamanya adalah Docker:
docker stats --no-stream localstack
docker stats --no-stream --format "table {{.Name}}\t{{.MemUsage}}\t{{.CPUPerc}}"Jika memory melonjak, periksa berapa banyak service yang aktif dan persempit lewat SERVICES:
SERVICES=s3,dynamodb,lambda localstack startLebih sedikit service aktif berarti lebih sedikit proses dan memory yang terpakai. Volume persistence yang membengkak juga bisa dicek ukurannya:
docker exec localstack du -sh /var/lib/localstackError klasik: port 4566 sudah dipakai. Penyebabnya instance lama masih hidup, atau ada proses lain yang menempel di port tersebut. Deteksi dengan:
lsof -i :4566
docker psLalu bereskan instance yang lama:
localstack stop
docker rm -f localstackAlternatif lain: jalankan di port yang berbeda — persis seperti strategi isolasi per developer di episode 15.
Lambda yang tidak merespons biasanya disebabkan salah satu dari ini:
| Gejala | Penyebab umum | Solusi |
|---|---|---|
| Invoke hang atau timeout | Runtime image tidak tersedia | Cek log, pastikan Docker bisa pull runtime |
| Event source mapping diam | Mapping salah target | Verifikasi arn source dan status mapping |
| Function error saat run | Kode bergantung service mati | Pastikan semua service dependency hidup |
Langkah pertama selalu sama: aktifkan DEBUG=1 lalu jalankan awslocal lambda invoke. Error di dalam kode function akan muncul di log, lengkap dengan traceback atau stack trace. Pastikan juga LAMBDA_EXECUTOR mengarah ke mode yang didukung environment kalian (misalnya Docker).
Persistence yang tidak berjalan biasanya karena salah satu hal ini:
PERSISTENCE=1 tidak di-set saat instance pertama dibuat.docker run tanpa argumen -v.Periksa lokasi data dan mount yang terpasang:
docker exec localstack ls /var/lib/localstack
docker inspect localstack --format '{{.Mounts}}'Jika folder kosong, berarti persistence tidak pernah aktif. Solusinya: restart instance dengan PERSISTENCE=1 dan volume bernama seperti contoh di episode 15.
CLI dan image yang berbeda versi sering menghasilkan perilaku aneh. Pastikan keduanya sinkron:
localstack --version
docker pull localstack/localstack:stable
localstack statusTag stable selalu merujuk rilis stabil terbaru. Setelah upgrade, cek changelog — beberapa rilis mengubah perilaku default yang bisa mengganggu asumsi kode lama.
Banyak "masalah" sebenarnya adalah batasan emulasi yang disengaja:
Cara terbaik mengetahui apa yang didukung: baca dokumentasi resmi per service atau changelog rilis. Jika fitur tidak tersedia, alternatifnya adalah menguji langsung di akun AWS nyata.
Checklist troubleshooting LocalStack:
DEBUG=1 dan baca localstack logs untuk gejala yang tidak jelas./_localstack/health sebagai readiness check.docker stats dan batasi service dengan SERVICES.lsof -i :4566, lalu bersihkan instance lama.PERSISTENCE dan mount volume.Dengan Fase 5 selesai, kita sudah punya fondasi yang kokoh: dari networking, security, advanced services, sampai CI/CD dan debugging. Di episode 20 selanjutnya kita membahas fitur stabil terbaru 2026.x: calendar versioning, image tunggal Community dan Pro, serta highlight rilis 2026.07.0. Sampai jumpa!