> For the complete documentation index, see [llms.txt](https://iniakunhuda.gitbook.io/belajar-aws-dengan-localstack/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://iniakunhuda.gitbook.io/belajar-aws-dengan-localstack/instalasi-localstack.md).

# Instalasi Localstack

***

## Instalasi Localstack

Localstack adalah tool open-source yang memungkinkan Anda untuk menjalankan simulasi layanan AWS secara lokal. Ini sangat berguna untuk pengembangan dan testing tanpa perlu koneksi ke cloud AWS yang sebenarnya.

### Persyaratan Sistem

Sebelum menginstal Localstack, pastikan sistem Anda memenuhi persyaratan berikut:

#### Persyaratan Minimum

| Komponen           | Minimum                                 | Recommended       |
| ------------------ | --------------------------------------- | ----------------- |
| **OS**             | Linux, macOS, Windows 10/11 dengan WSL2 | Linux, macOS      |
| **RAM**            | 4 GB                                    | 8 GB atau lebih   |
| **CPU**            | 2 core                                  | 4 core atau lebih |
| **Disk**           | 10 GB free space                        | 20 GB atau lebih  |
| **Docker**         | 20.10+                                  | Latest version    |
| **Docker Compose** | 1.29+                                   | Latest version    |

#### Persyaratan Software

1. **Docker** - Localstack berjalan di dalam container Docker
2. **Docker Compose** (optional) - Untuk konfigurasi yang lebih kompleks
3. **Python 3.7+** (optional) - Jika instalasi via pip
4. **AWS CLI 2+** - Untuk berinteraksi dengan Localstack
5. **awslocal** (optional) - Wrapper AWS CLI untuk Localstack

### Metode Instalasi

#### Metode 1: Menggunakan Docker (Recommended)

Ini adalah metode paling direkomendasikan karena Docker menyediakan isolasi yang baik dan mudah diinstal.

**1.1 Install Docker**

**macOS:**

```bash
# Menggunakan Homebrew
brew install --cask docker
```

**Ubuntu/Debian:**

```bash
# Update package index
sudo apt-get update

# Install Docker
sudo apt-get install -y docker.io docker-compose

# Enable dan start Docker
sudo systemctl enable docker
sudo systemctl start docker

# Tambahkan user ke docker group (optional, untuk menjalankan tanpa sudo)
sudo usermod -aG docker $USER

# Logout dan login kembali untuk perubahan group生效
```

**Windows:**

1. Download Docker Desktop dari [docker.com](https://www.docker.com/products/docker-desktop/)
2. Install dengan WSL2 backend (recommended)

**1.2 Verifikasi Instalasi Docker**

```bash
docker --version
docker-compose --version
```

Output yang diharapkan:

```
Docker version 24.0.7
Docker Compose version v2.23.0
```

**1.3 Jalankan Localstack dengan Docker**

**Cara termudah menggunakan localstack CLI:**

```bash
# Install localstack CLI
pip install localstack

# Jalankan localstack
localstack start
```

**Atau menggunakan docker run langsung:**

```bash
docker run --rm -it \
  -p 4566:4566 \
  -p 4510-4559:4510-4559 \
  localstack/localstack
```

**Atau menggunakan Docker Compose:**

Buat file `docker-compose.yml`:

```yaml
version: "3.8"

services:
  localstack:
    container_name: localstack_main
    image: localstack/localstack:latest
    ports:
      - "4566:4566"            # LocalStack Edge Proxy
      - "4510-4559:4510-4559"  # External services port range
    environment:
      - DEBUG=1
      - SERVICES=lambda,s3,ec2,dynamodb,apigateway,iam
      - DOCKER_HOST=unix:///var/run/docker.sock
    volumes:
      - "./volume:/var/lib/localstack"
      - "/var/run/docker.sock:/var/run/docker.sock"
```

Jalankan dengan:

```bash
docker-compose up
```

#### Metode 2: Menggunakan pip (Python Package Manager)

Cocok untuk pengembangan Python atau jika Anda ingin mengintegrasikan Localstack dengan aplikasi Python.

**2.1 Install Python**

**macOS:**

```bash
brew install python@3.11
```

**Ubuntu/Debian:**

```bash
sudo apt-get install -y python3 python3-pip python3-venv
```

**Windows:** Download dari [python.org](https://www.python.org/downloads/)

**2.2 Install Localstack**

```bash
# Install via pip
pip install localstack

# Atau install dengan extras untuk fitur lengkap
pip install "localstack[full]"
```

**2.3 Jalankan Localstack**

```bash
localstack start
```

#### Metode 3: Menggunakan Homebrew (macOS only)

```bash
# Install localstack
brew install localstack

# Jalankan localstack
localstack start
```

### Instalasi AWS CLI

AWS CLI diperlukan untuk berinteraksi dengan Localstack.

#### Install AWS CLI v2

**macOS:**

```bash
# Menggunakan Homebrew
brew install awscli
```

**Linux:**

```bash
# Download dan install
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
```

**Windows:** Download installer dari [aws.amazon.com/cli/](https://aws.amazon.com/cli/)

#### Verifikasi Instalasi

```bash
aws --version
```

Output yang diharapkan:

```
aws-cli/2.13.0 Python/3.11.5
```

#### Konfigurasi AWS CLI untuk Localstack

Secara default, awslocal akan otomatis mengarah ke Localstack. Namun, Anda juga bisa mengonfigurasi AWS CLI secara manual:

```bash
# Buat profile khusus untuk localstack
aws configure --profile localstack

# Masukkan nilai dummy (tidak penting untuk localstack)
AWS Access Key ID: test
AWS Secret Access Key: test
Default region name: us-east-1
Default output format: json
```

Atau gunakan environment variable:

```bash
export AWS_ACCESS_KEY_ID=test
export AWS_SECRET_ACCESS_KEY=test
export AWS_DEFAULT_REGION=us-east-1
```

### Instalasi awslocal

`awslocal` adalah wrapper untuk AWS CLI yang secara otomatis mengarahkan request ke Localstack. Ini sangat memudahkan karena Anda tidak perlu menentukan endpoint URL setiap kali.

#### Install awslocal

```bash
pip install awscli-local
```

#### Verifikasi Instalasi

```bash
awslocal --version
```

#### Perbedaan aws dan awslocal

```bash
# Menggunakan AWS CLI biasa (perlu endpoint URL)
aws --endpoint-url=http://localhost:4566 s3 ls

# Menggunakan awslocal (otomatis ke Localstack)
awslocal s3 ls
```

### Verifikasi Instalasi Localstack

Setelah instalasi selesai, verifikasi bahwa Localstack berjalan dengan baik:

#### 1. Pastikan Localstack Berjalan

```bash
# Cek health endpoint
curl http://localhost:4566/health
```

Output yang diharapkan:

```json
{"status": "running"}
```

#### 2. Test Service S3

```bash
# Buat bucket
awslocal s3 mb s3://test-bucket

# List buckets
awslocal s3 ls

# Hapus bucket
awslocal s3 rb s3://test-bucket
```

#### 3. Test Service EC2

```bash
# Describe instances
awslocal ec2 describe-instances

# Describe images
awslocal ec2 describe-images
```

### Konfigurasi Lanjutan

#### Konfigurasi Environment Variables

Localstack dapat dikonfigurasi melalui environment variables:

```bash
# Port kustom
export LOCALSTACK_HOST=localhost:4566

# Services yang aktif
export SERVICES=lambda,s3,ec2,dynamodb,apigateway

# Debug mode
export DEBUG=1

# Data persistence
export DATA_DIR=/tmp/localstack/data
```

#### Konfigurasi dengan docker-compose

Untuk setup yang lebih advanced, gunakan docker-compose dengan konfigurasi lengkap:

```yaml
version: "3.8"

services:
  localstack:
    container_name: localstack_main
    image: localstack/localstack:latest
    network_mode: bridge
    ports:
      - "4566:4566"
      - "4510-4559:4510-4559"
    environment:
      # Services yang akan dijalankan
      - SERVICES=s3,ec2,lambda,dynamodb,apigateway,iam,cloudformation

      # Debug mode
      - DEBUG=1

      # Development mode
      - DEVELOP=1

      # Persistence
      - DATA_DIR=/tmp/localstack/data

      # Docker host untuk Lambda
      - LAMBDA_EXECUTOR=docker
      - DOCKER_HOST=unix:///var/run/docker.sock

      # Edge port
      - EDGE_PORT=4566

      # Region
      - DEFAULT_REGION=ap-southeast-1

    volumes:
      # Volume untuk persistence
      - "./localstack_data:/tmp/localstack/data"
      - "./volume:/var/lib/localstack"
      # Docker socket untuk Lambda containers
      - "/var/run/docker.sock:/var/run/docker.sock"
```

Jalankan dengan:

```bash
docker-compose up -d
```

### Troubleshooting

#### Masalah 1: Localstack Tidak Start

```bash
# Cek apakah port 4566 sudah digunakan
lsof -i :4566

# Kill proses yang menggunakan port 4566
kill -9 <PID>

# Atau gunakan port berbeda
docker run -p 4567:4566 localstack/localstack
```

#### Masalah 2: Docker Permission Denied (Linux)

```bash
# Tambahkan user ke docker group
sudo usermod -aG docker $USER

# Logout dan login kembali
# Atau gunakan newgrp
newgrp docker
```

#### Masalah 3: awslocal Command Not Found

```bash
# Install ulang awslocal
pip uninstall awscli-local
pip install awscli-local

# Atau gunakan full path python
python -m awslocal.clidriver --version
```

#### Masalah 4: Services Tidak Tersedia

```bash
# Cek health endpoint untuk melihat services yang aktif
curl http://localhost:4566/health

# Output example:
# {"services": {"s3": "available", "ec2": "available", ...}}

# Enable specific services
export SERVICES=lambda,s3,ec2
localstack start
```

#### Masalah 5: Out of Memory

Jika Localstack crash karena memory:

```bash
# Increase Docker memory limit (Docker Desktop settings)
# Atau gunakan konfigurasi minimal

docker run --rm -it \
  -p 4566:4566 \
  -e SERVICES=s3,ec2 \
  localstack/localstack
```

### Update Localstack

Untuk mengupdate Localstack ke versi terbaru:

```bash
# Menggunakan Docker
docker pull localstack/localstack:latest

# Menggunakan pip
pip install --upgrade localstack

# Menggunakan Homebrew (macOS)
brew upgrade localstack
```

### Uninstall Localstack

Jika Anda ingin menghapus Localstack sepenuhnya:

#### Hapus Container dan Image

```bash
# Stop dan hapus container
docker stop localstack_main
docker rm localstack_main

# Hapus image
docker rmi localstack/localstack
```

#### Hapus Volume Data

```bash
# Hapus volume data Localstack
rm -rf /tmp/localstack
rm -rf ./volume
rm -rf ./localstack_data
```

#### Hapus paket

```bash
# Jika install via pip
pip uninstall localstack

# Jika install via Homebrew
brew uninstall localstack
```

### Next Steps

Setelah instalasi selesai, Anda bisa:

1. Membaca Fitur Localstack untuk mengetahui layanan yang tersedia
2. Mengikuti tutorial Membuat Instance EC2
3. Explore dokumentasi resmi di [docs.localstack.cloud](https://docs.localstack.cloud/)

### Ringkasan Command Penting

| Command                             | Deskripsi               |
| ----------------------------------- | ----------------------- |
| `localstack start`                  | Menjalankan Localstack  |
| `localstack stop`                   | Menghentikan Localstack |
| `aws --version`                     | Cek versi AWS CLI       |
| `awslocal --version`                | Cek versi awslocal      |
| `curl http://localhost:4566/health` | Cek status Localstack   |
| `docker pull localstack/localstack` | Update image Docker     |
