Localstack 사용기

개요

프로젝트를 하다보면 AWS 리소스를 활용해야하는 경우가 항상 발생하는데 처음 사용해보는 리소스라면 실제로 구성해놓고 테스트하는게 항상 부담이였다.
그래서 로컬에 세팅할 순 없을까하고 찾아보다가 알게 된 localstack의 사용기에 대해서 써보려고합니다.

Localstack?

localstack은 개발 단계에서 필요한 AWS 클라우드 리소스 기능들을 로컬환경에서 에뮬레이션하여 제공해준다.
도커를 사용하여 간단하게 에뮬레이션할 수 있기 때문에 테스트에 매우 용이합니다.

환경 세팅

테스트 해본 AWS 리소스는 SQS였고 docker-compose를 이용하여 테스트를 진행했습니다.

  • docker: 20.10.11
  • docker-compose: 1.29.2

docker-compose.yml

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
version: "3"

services:
localstack:
container_name: localstack
image: localstack/localstack:0.12.11
ports:
- "4566-4576:4566-4576"
environment:
- SERVICES=sqs
- DEFAULT_REGION=${DEFAULT_REGION- }
- DEBUG=0
- DOCKER_HOST=unix:///var/run/docker.sock
- "/var/run/docker.sock:/var/run/docker.sock"
- "${TMPDIR:-/tmp/localstack}:/tmp/localstack"

setup-aws-resources:
image: amazon/aws-cli:2.2.7
volumes:
- ./dev_env:/project/dev_env
- ./aws:/aws
environment:
- AWS_ACCESS_KEY_ID=${ACCESS_KEY_ID- }
- AWS_SECRET_ACCESS_KEY=${SECRET_ACCESS_KEY- }
- AWS_DEFAULT_REGION=${DEFAULT_REGION- }
entrypoint: /bin/sh -c
command: >
"
echo wait for the state of localstack to become ready...
sleep 10
aws sqs create-queue --queue-name ${QUEUE_NAME- } --endpoint-url=http://localstack:4566 --attributes file://${QUEUE_FILE_NAME- }
echo set up aws resources is complete
"
depends_on:
- localstack
  • 참고한 사이트와 동일하게 docker-compose.yml을 구성하였습니다.

run.sh & create_queue.json

1
2
3
4
5
6
7
8
9
10
11
12
13
#!/bin/bash

# Localstack
export SERVICES=sqs
export TMPDIR=/private$TMPDIR
export DEBUG=0
export DEFAULT_REGION=ap-northeast-2
export ACCESS_KEY_ID=accesskey
export SECRET_ACCESS_KEY=secretkey
export QUEUE_NAME=test-queue
export QUEUE_FILE_NAME=create_queue.json

docker-compose up -d --remove-orphans
1
2
3
{
"ReceiveMessageWaitTimeSeconds": "20"
}
  • 위와 같이 run.sh 파일과 create_queue.json 파일을 작성하여 실행할 수 있으며 SQS attributes에 관련된 사항은 링크에서 확인 할 수 있습니다.
  • docker-compose.yml에 작성한대로 /aws 폴더 안에 json 파일을 위치시켜놓는다.
  • aws --endpoint-url=https://localhost:4566 sqs list-queues 명령어로 생성된 큐를 확인할 수 있습니다.

Result

docker

  • docker ps -a

list_queue

  • aws --endpoint-url=http://localhost:4566 sqs list-queues

Reference


0%