1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# =============================================================================
# Armature Lambda - Local Development Environment
# =============================================================================
# Use this for local testing of Lambda functions with LocalStack
# =============================================================================
services:
# ---------------------------------------------------------------------------
# LocalStack - AWS Services Emulator
# ---------------------------------------------------------------------------
localstack:
image: localstack/localstack:latest
container_name: armature-localstack
ports:
- "4566:4566" # LocalStack Gateway
- "4510-4559:4510-4559" # Service ports
environment:
- SERVICES=lambda,apigateway,s3,dynamodb,sqs,sns,secretsmanager
- DEBUG=0
- LAMBDA_EXECUTOR=docker
- DOCKER_HOST=unix:///var/run/docker.sock
- AWS_DEFAULT_REGION=us-east-1
- AWS_ACCESS_KEY_ID=test
- AWS_SECRET_ACCESS_KEY=test
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
- localstack_data:/var/lib/localstack
healthcheck:
test:
interval: 10s
timeout: 5s
retries: 5
# ---------------------------------------------------------------------------
# Lambda Function (for local invoke testing)
# ---------------------------------------------------------------------------
lambda-app:
build:
context: .
dockerfile: Dockerfile
image: armature-lambda:dev
depends_on:
localstack:
condition: service_healthy
environment:
- AWS_ENDPOINT_URL=http://localstack:4566
- AWS_DEFAULT_REGION=us-east-1
- AWS_ACCESS_KEY_ID=test
- AWS_SECRET_ACCESS_KEY=test
- RUST_LOG=debug
# ---------------------------------------------------------------------------
# Lambda Web Adapter (for local HTTP testing)
# ---------------------------------------------------------------------------
lambda-web:
build:
context: .
dockerfile: Dockerfile
image: armature-lambda:dev
ports:
- "9000:8080"
environment:
- AWS_LWA_PORT=8080
- RUST_LOG=info
# Lambda Web Adapter converts HTTP to Lambda events
entrypoint:
volumes:
localstack_data:
networks:
default:
name: armature-lambda-net