노트북이나 CI 환경에서 단일 컨테이너에서 실행되는 클라우드 서비스 에뮬레이터.
원격 클라우드 공급자에 연결하지 않도고 AWS 애플리케이션이나 람다를 로컬에서 실행할 수 있다.
LocalStack을 사용하려면 라이센스가 필요하다. 14일 평가판을 선택하거나 돈을 지불해야 한다.
https://app.localstack.cloud/sign-in
하지만 무료 버전에서도 다양한 지원을 하고있어서 나는 가입없이 DynamoDB를 사용했다.
localStack을 사용하기 위해선 docker, docker-compose가 필수이다.
나는 LocalStack CLI로 실행한 LocalStack에 NoSQL Workbench를 연결하고 DynamoDB 테이블을 생성했다. DynamoDB만 사용하고 있어 docker-compose을 수정하지 않았다.
brew install localstack/tap/localstack-clilocalstack --versionbrew install awscliaws --version
localstack start -ddocker ps
LocalStack은 다수의 AWS 서비스를 동시에 제공할 수 있기 때문에 여러 포트가 열린다.localstack stopversion: "3.8"
services:
localstack:
image: localstack/localstack:latest
container_name: localstack-main
ports:
- "4566:4566" # LocalStack Edge 포트
- "4510-4559:4510-4559" # 서비스별 포트
environment:
- SERVICES=s3,dynamodb,sqs,lambda # 사용하고자 하는 AWS 서비스
- DEBUG=1 # 디버깅 모드
- DATA_DIR=/tmp/localstack/data # 데이터 지속성 설정
volumes:
- "/var/run/docker.sock:/var/run/docker.sock" # Docker 내부 접근
- "./docker/localstack:/tmp/localstack" # 데이터 저장 경로
docker ps로 확인한 localstack과 동일한 port로(4566) workbench에 연결을 해야한다.

local:4566 DB가 생성된게 보인다.

DB에 들어가서 Tables의 + 버튼을 통해 faq 테이블을 만들어봤다.
Connection의 열쇠 아이콘을 누르면 AWS Access Key 정보가 보인다.

터미널에서 aws configure를 실행해 aws 자격 증명 설정은 workbench의 정보를 입력한다.
region은 기본으로 us-east-1로 세팅된다.
AWS Access Key ID: workbench 정보
AWS Secret Access Key: workbench 정보
Default region name: us-east-1
Default output format: json
이제 DynamoDB 테이블 확인이 가능하다.
aws dynamodb list-tables --endpoint-url=http://localhost:4566 --region us-east-1
workbench에서 생성한 faq 테이블이 보인다.

awslocal은 자동으로 LocalStack의 endpoint(기본으로 localhost:4566)에 요청을 보낸다.
aws CLI를 사용할 수도 있지만, 매번 --endpoint-url을 입력해야 한다.
awscli-local은 pip를 사용해 설치할 수 있다. 나는 pip 설치하고 awslocal을 또 설치하는게 번거로워서 aws cli를 사용했다.
터미널에서 create-table을 하면 workbench에서도 tastTable이 추가된것을 확인할 수 있다.
aws dynamodb create-table \
--table-name TestTable \
--attribute-definitions AttributeName=Id,AttributeType=S \
--key-schema AttributeName=Id,KeyType=HASH \
--provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 \
--endpoint-url=http://localhost:4566 \
--region us-east-1


https://docs.localstack.cloud/getting-started/
LocalStack 활용한 AWS 테스트 환경 구성하기